キーの空の値をキャプチャする正規表現

キーの空の値をキャプチャする正規表現

以下の入力文字列から「コメント」値をキャプチャしようとしていますが、次のregex = ^comment[\s*:]*(.*) ような出力が表示されます。 "comment": "プローブサイクルエラー: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 :

ベストアンサー1

を使用しsed、次の後に最初の空白文字が必要ないとします:

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

または、1つの編集ステートメントのみを使用して

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

Pythonでは、次のように見たいです。

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

または多分

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

PythonがPOSIX文字クラスを理解していない場合

この[[:blank:]]*ビットはスペースまたはタブの順序と一致します。このパターンは、改行文字を含むより広い範囲の空白文字と一致するという点で、\sPOSIX文字クラスに似ています。[[:space:]]


式の問題は、文字列内で文書全体を一致させるのに対し、Python(あなたが使用していると仮定)では、文字列\s(文書全体の文字列)に含まれる改行を一致させることです。したがって、この式は、最初の非空白(改行を含む)、non *、non :(両方のリテラルです:)、文字(つまり、次の行のin)から次の改行まですべてをキャプチャします。*[...]pprobe

おすすめ記事