grepで動作しない正しい正規表現

grepで動作しない正しい正規表現

この正規表現があります。

(?<=prefix).*$

文字列の「プレフィックス」に続くすべての文字を返し、すべてのオンライン正規表現エンジン(例:https://regex101.com)。問題は、bashでこの正規表現を使用するときです。

grep '(?<=prefix).*$' <<< prefixSTRING

何も一致しません。正規表現がgrepで機能しないのはなぜですか?

ベストアンサー1

正しい正規表現を定義したようですが、grepこれを理解するのに十分なコマンドラインに十分なフラグを設定していません。 BREはデフォルトでサポートされ、grepフラグを使用するため、-EEREをサポートします。あなたが持っているもの(プレビュー)はPCRE正規表現バージョンでのみ利用可能です。これはフラグ付きのgrepGNU-Pでのみサポートされています。

抽出する必要があるとしましょう。ただ印刷に通知するには、文字列を一致させてから追加のprefixフラグを追加する必要があります。-ogrepただ一致する部分は

grep -oP '(?<=prefix).*$' <<< prefixSTRING

grepデフォルトでは、PCREライブラリをサポートするバージョンもあります。pcregrep君はその中でできる

pcregrep -o '(?<=prefix).*$' <<< prefixSTRING

さまざまな正規表現スタイルの詳細な説明は、この素晴らしい記事で説明されています。ザイルズの答えそしてそれを実装するためのツール

おすすめ記事