expr マッチでエスケープされた括弧の意味

expr マッチでエスケープされた括弧の意味

誰でも角かっこをエスケープする場合は、次の2つのコマンドの違いを伝えたり、疑いを解消したりする可能性のある文書を参照できますか?

string=abcABC123ABCabc

$ echo `expr match "$string" 'abc[A-Z]*.2'` #Result is 8, the count of matched characters

$ echo `expr match "$string" '\(abc[A-Z]*.2\)'`   #Result is abcABC12, the matched characters

ここで括弧をエスケープするという実際の意味は何ですか\(...\)

ベストアンサー1

GNUを参照expr(coreutilsの一部)と\(タグ\)付け中グループに記録されているように16.4.1 文字列式:

一致が成功し、正規表現が‘\(’andを使用すると、‘\)’式はサブ式と一致する文字列部分を返します。それ以外の場合は、一致する文字数が返されます。

ドキュメントリファレンス3正規表現もっと学ぶgrep。これ通事論正規表現の数は次のとおりです。ファイルに書き込むPOSIXでは:

完全一致が最も左の一致のうち最も長いものと一致するように、各サブパターンは左から右にできるだけ長い文字列と一致する必要があります。これを行うには、空の文字列をまったく一致しないよりも長いものとして扱う必要があります。たとえば、"\(.*\).*"BREと一致すると、サブ式は"abcdef"になり、BREを "bc"と一致すると、サブ式は空の文字"abcdef"列です。"(\1)""\(a*\)*""(\1)"

POSIXexpr演算子を含む正規表現は次のとおりです:

expr1 : expr2

しかし:

文字列パラメータの使用lengthサブストリング索引またはmatch指定されていない結果が生成されます。

それで、この特別な使い方は拡張のようです。

POSIX の使用法は、:リソースのセクションで詳しく説明されています。一致表現;これマッチここに示されている演算子はに対応します:が、場所に変更プレフィックス:POSIXで使用される演算子(以前は2つの演算子)中尉(2つのオペランド間)。

グループとして、長さなどで見ることができる。拡大する(特定のユーティリティでは不可能な非標準機能を提供)または単に非標準(他の方法で実行できる機能を実行する互換性のない方法)これはハイブリッドです。 POSIX シェルは同様の機能を提供します。長さなど、該当する項目に記載されているようにパラメータの置換つまり、${#parameter}。しかし、サブストリングそして索引明白で正確な等価物はありません。 (構文は異なりますが、グループ全体は以下に基づいています。awk)。

おすすめ記事