正規表現と文字グループ全体の否定 [重複] 質問する

正規表現と文字グループ全体の否定 [重複] 質問する

私は、自分にとってかなり明白なはずだと感じている何かを試みていますが、そうではありません。特定の文字シーケンスを含まない文字列に一致させようとしています。、、などを使用して、[^ab][^(ab)]a」または「b」を含まない文字列、「a」のみ、「b」のみ、または「ba」を含む文字列に一致させようとしましたが、「ab」には一致しませんでした。私が示した例は「ab」には一致しませんが、「a」のみにも一致しないので、一致させる必要があります。これを行う簡単な方法はありますか?

ベストアンサー1

などの文字クラスを使用すると、文字セット内に含まれない単一の文字[^ab]と一致します。( は否定部分です)。^

複数文字シーケンスを含まない文字列を一致させるにはab、否定の先読みを使用します。

^(?:(?!ab).)+$


上記の式を正規表現コメントモードで分解すると次のようになります。

(?x)    # enable regex comment mode
^       # match start of line/string
(?:     # begin non-capturing group
  (?!   # begin negative lookahead
    ab  # literal text sequence ab
  )     # end negative lookahead
  .     # any single character
)       # end non-capturing group
+       # repeat previous match one or more times
$       # match end of line/string

おすすめ記事