または `expr match`から

または `expr match`から

なぜこれが一致しないのか混乱しています。

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 ::の例です。

おすすめ記事