この正規表現があります。
(?<=prefix).*$
文字列の「プレフィックス」に続くすべての文字を返し、すべてのオンライン正規表現エンジン(例:https://regex101.com)。問題は、bashでこの正規表現を使用するときです。
grep '(?<=prefix).*$' <<< prefixSTRING
何も一致しません。正規表現がgrepで機能しないのはなぜですか?
ベストアンサー1
正しい正規表現を定義したようですが、grep
これを理解するのに十分なコマンドラインに十分なフラグを設定していません。 BREはデフォルトでサポートされ、grep
フラグを使用するため、-E
EREをサポートします。あなたが持っているもの(プレビュー)はPCRE正規表現バージョンでのみ利用可能です。これはフラグ付きのgrep
GNU-P
でのみサポートされています。
抽出する必要があるとしましょう。ただ印刷に通知するには、文字列を一致させてから追加のprefix
フラグを追加する必要があります。-o
grep
ただ一致する部分は
grep -oP '(?<=prefix).*$' <<< prefixSTRING
grep
デフォルトでは、PCREライブラリをサポートするバージョンもあります。pcregrep
君はその中でできる
pcregrep -o '(?<=prefix).*$' <<< prefixSTRING
さまざまな正規表現スタイルの詳細な説明は、この素晴らしい記事で説明されています。ザイルズの答えそしてそれを実装するためのツール