なぜこれが一致しないのか混乱しています。
expr match Unauthenticated123 '^(Unauthenticated|Authenticated).*'
0を出力します。
ベストアンサー1
あなたのコマンドは次のようになります。
expr match Unauthenticated123 'Unauthenticated\|Authenticated'
文字数を一致させたい場合。
認証なしで文字列の一部を返すには、次のようにします。
expr match Unauthenticated123 '\(Unauthenticated\|Authenticated\)'
からinfo coreutils 'expr invocation'
:
「文字列:正規表現」 パターンマッチングを実行します。パラメータが文字列に変換されます。 2番目のものが考慮されます(デフォルト、GNU `grep') 暗黙的に「^」が前に来る正規表現です。最初 その後、パラメータはこの正規表現と一致します。 一致が成功し、REGEX が "\(" および "\)" を使用する場合、":" 式はSTRING ANDを返します。 それ以外の場合は文字数を返します。 マッチ。 一致が失敗すると、 ":"演算子は空の文字列を返します。 REGEX では "\(" および "\)" を使用し、そうでない場合は 0 を使用します。 最初の「\(...\)」ペアだけが戻り値に関連付けられます。 追加のペアは、一般的なグループ化にのみ意味があります。 式演算子。 正規表現で「\+」、「\?」および「\|」は演算子です。 1つ以上、0、1、または個別に一致 代替。 SunOSおよびその他の「expr」はこれを一般的に扱います。 数値。 (POSIXでは両方の動作を許可します。)*正規表現注 式ライブラリ:(regex)正規表現の詳細については、トップに戻る 通事論。 *参考の例のいくつかはexpr ::の例です。