Regular-Expression
正則表達式擷取鍵的空白值
我試圖從下面的輸入字元串中擷取“評論”的值,
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
匹配字元串中嵌入的換行符(整個文件的字元串)。因此,該表達式擷取了從第一個非空格(包括換行符)、非*
-、非:
-(兩者都是:
和*
內的文字[...]
)、字元(即下一行的p
inprobe
)到下一個換行符的所有內容。