web-dev-qa-db-ja.com

C#正規表現は特定の文字列を含まない文字列と一致しますか?

notに「DontMatchThis」という文字列が含まれる文字列に一致させたい。

正規表現とは何ですか?

25
Shaul Behr

これを試して:

^(?!.*DontMatchThis).*$
49
Kamarey

特定のパターンを含まない文字列に一致する正規表現は

(?s)^(?!.*DontMatchThis).*$

(?s)なしのパターンを使用する場合(これは、RegexOptions.Singlelineを改行LF記号および他のすべての文字に一致させる.フラグのインラインバージョンです] )、DontMatchThisは最初の行でのみ検索され、LF記号のない文字列のみが.*と一致します。

パターンの詳細

  • (?s)-.を任意の文字に一致させるDOTALL /シングルライン修飾子
  • ^-文字列アンカーの開始
  • (?!.*DontMatchThis)-a negative lookahead 0以上の文字があるかどうかを確認します(貪欲に一致.*サブパターン-[〜#〜]ノート[〜#〜]レイジー.*?バージョン(次のサブパターンマッチ)は、DontMatchThisが文字列startに近いと予想される場合、その後にDontMatchThisが続く場合に、ジョブをより速く実行する可能性があります。
  • .*-0個以上の任意の最大文字数
  • $-文字列の終わり(アンカー文字:ドル($を参照)。
23