2017-06-03 61 views
-1

匹配我嘗試寫一個正則表達式使用這個別名爲「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 
+0

什麼是正則表達式? –

+0

正則表達式在哪裏使用?嘗試'端口名稱=(COM \ d +)(?:(?!\ [Serial_COM)。)*?Alias = BoardUSB' –

回答

0

您可以使用此模式:

(?m)^Port name=(COM\d+)\r?\n(?:[^[].*\n)*Alias=BoardUSB 

[^[]確保「端口名稱」和「別名」之間的界限不以[開始。

demo

0

你可以使用這個表達式:

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

尤其((?!Port)[\w\W])*排除包含單詞「端口」,「端口」之間以及「別名」,讓你不所有字符串讀取與另一個端口關聯的別名。