0

検索文字列があり、正規表現を使用して、それと等しくないものをすべて見つけます。

つまり、このように

string searchStr = SearchStr;
searchStr = System.Text.RegularExpressions.Regex.Escape(searchStr).
    Replace(@"\*", ".+").
    Replace(@"\?", ".");
//if (searchStr.StartsWith("!"))//(?!hede).)
//    searchStr = "?!" + searchStr.Substring(1);

次に、Regex.isMatch を実行しますが?!、次のパターンを実行することはできません。何かアイデアはありますか?

4

3 に答える 3

0

用語で始まらない文字列を避けたい場合は、後読みを使用します。後読みと後読みは括弧で囲む必要があります。現時点では、実際に疑問符と感嘆符を含む文字列を検索しているように、括弧を追加しないと文字通りの検索を行っているようです。

では、文字列 "abc" と "bbc" があり、a で始まらない文字列を見つけたいとしましょう。後読み正規表現は次のようになります。

(?<!a)b
于 2013-04-19T13:04:17.263 に答える
0

と等しくない単語を検索したい場合は、次のようにしてsomethingください。

\b(?!something\b)\w+\b

プログラムでビルドするには:

String.Format(@"\b(?!{0}\b)\w+\b", Regex.Escape(negativeSearchStr))

説明:

\b\w+\b

言葉のパターンです

(?!something) 

は、単語が で始まらない否定的な先読みですsomething。そして最後に:

(?!something\b)

は、単語が と等しくない否定的な先読みですsomething

于 2013-04-19T12:59:06.657 に答える