Regex 在多行中匹配字符串后再匹配字符串
我尝试编写一个正则表达式来搜索别名为“USBBoard”的端口名 通过使用以下命令: 端口名=(COM\d+。*别名=BoardUSB 但小组赛似乎是“COM10”而不是“COM1” 有什么改进正则表达式的建议吗?谢谢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
[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