bash正規表現が\ bをサポートしていない理由はありますか? [コピー]

bash正規表現が\ bをサポートしていない理由はありますか? [コピー]

私が知る限り、\bbashは「単語の境界」を表すメタシーケンスをサポートしません。

if [[ $foo =~ .*\bWORD\b.* ]]; then

この機能がサポートされていない理由はありますか?

bashのパッチ/プール要求を作成すると想像してください。実装できない理由はありますか\b(「この機能が気に入らない」などを除く)?

ベストアンサー1

~によるとbashマニュアルページ、この=~演算子はPOSIX正規表現関数を使用しているようです。

演算子を使用すると、=~右側の文字列はPOSIX拡張正規表現パターンとして扱われ、それに応じて一致します(POSIXregcompおよび一般的に説明されているインタフェースを使用)。regexecregex(3)

メタ\bシーケンスはPerl正規表現構文POSIXの一部ではないため、Bashで使用されるライブラリはそれをサポートしていないようです。したがって、Bashでこれをサポートすることは、ライブラリを変更することを意味する可能性があり、これはしばしば深刻な副作用を引き起こします。

これは純粋に文法的要素に対応するために行われたようではありません。

おすすめ記事