Regex 在多行中匹配字符串后再匹配字符串

Regex 在多行中匹配字符串后再匹配字符串,regex,Regex,我尝试编写一个正则表达式来搜索别名为“USBBoard”的端口名 通过使用以下命令: 端口名=(COM\d+。*别名=BoardUSB 但小组赛似乎是“COM10”而不是“COM1” 有什么改进正则表达式的建议吗?谢谢 [Serial_COM10] Port name=COM10 Baud rate=9600 Data bits=8 Timeout=2500 Alias=COM_PPS Handshake=None [Serial_COM1] Port name=COM1 Baud rate=9

我尝试编写一个正则表达式来搜索别名为“USBBoard”的端口名 通过使用以下命令:

端口名=(COM\d+。*别名=BoardUSB

但小组赛似乎是“COM10”而不是“COM1” 有什么改进正则表达式的建议吗?谢谢

[Serial_COM10]
Port name=COM10
Baud rate=9600
Data bits=8
Timeout=2500
Alias=COM_PPS
Handshake=None
[Serial_COM1]
Port name=COM1
Baud rate=9600
Data bits=8
Timeout=2500
Alias=BoardUSB
Handshake=None
[Serial_COM3]
Port name=COM3
Baud rate=115200
Data bits=8
Timeout=2500
Alias=usb_hub
Handshake=None

您可以使用以下模式:

(?m)^Port name=(COM\d+)\r?\n(?:[^[].*\n)*Alias=BoardUSB
[^[]
确保“端口名”和“别名”之间的行不以
[
开头


您可以使用此正则表达式:

Port\sname=(COM\d+)((?!Port)[\w\W])*Alias=BoardUSB

特别是,
((?!Port)[\w\w])*
排除“Port”和“Alias”之间包含单词“Port”的所有字符串,这样您就不会读取与另一个端口关联的别名。

什么是regex风格?在哪里使用regex?试试
端口名=(COM\d+(?!\[Serial\u COM])*?Alias=BoardUSB