Regular-Expression

正則表達式擷取鍵的空白值

  • April 14, 2021

我試圖從下面的輸入字元串中擷取“評論”的值,regex = ^comment[\s*:]*(.*) 但我得到低於輸出: “評論”:“探測週期錯誤:0”

No of Host Probes       : 0
Max no of Host Probes   : 0
rstIsFailure            : 1
state                   : UNKNOW
comment                 :  
probe cycle errors      : 0
Perf Callback Ids       : None
Group Member            : __jjjjkj - U0

預期輸出:comment :

使用sed, 並假設您不想要::之後的第一個空白字元

sed '/^comment/!d; s/[^:]*:[[:blank:]]//' file

或者,只有一個編輯語句,

sed -n 's/^comment[[:blank:]]*:[[:blank:]]\(.*\)/\1/p' file

在 Python 中,我想這看起來像

^comment[[:blank:]]*:[[:blank:]](.*)

或者可能

^comment\s*:\s(.*)

如果 Python 不理解 POSIX 字元類。

[[:blank:]]*位匹配任何空格或製表符字元。該\s模式更像 POSIX[[:space:]]字元類,它匹配更廣泛的類似空格的字元數組,包括換行符。


您的表達式的問題是您正在匹配字元串中的整個文件,而在 Python 中(我假設您正在使用)\s匹配字元串中嵌入的換行符(整個文件的字元串)。因此,該表達式擷取了從第一個非空格(包括換行符)、非*-、非:-(兩者都是:*內的文字[...])、字元(即下一行的pin probe)到下一個換行符的所有內容。

引用自:https://unix.stackexchange.com/questions/644363