簡體   English   中英

我如何獲得?! 正則表達式運算符能否正常工作?

[英]How do I get the ?! regex operator to work properly?

我有一個搜索字符串,並使用正則表達式查找與它不相等的所有內容。

即像這樣

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

然后我執行Regex.isMatch但無法獲取?! 做一個不遵循以下模式的想法?

如果我對您的理解正確,就不能追加?! 首先,您需要建立一個否定的前瞻性小組,並根據要搜索的內容/方式進行錨定。 根據您的操作,類似這樣的方法可能會起作用:

searchStr = "^(?!" + searchStr.Substring(1) + "$).*";

否定正則表達式結果可能會更容易:

Regex r = new Regex(..);
Match m = r.Match(someText);
if (m.Success != searchStr.StartsWith("!")) {
  // matches!
} 

您希望當.StartsWith("!")false時正則表達式成功(返回true ),反之亦然。

如果要搜索不等於something單詞,請嘗試:

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

並以編程方式構建它:

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

說明:

\b\w+\b

是單詞的模式

(?!something) 

否定性表示詞不是以something開頭的。 最后:

(?!something\b)

否定性表示詞不等於something

如果您要避免使用不以術語開頭的字符串,則將使用后向。 回顧和回顧應該用括號括起來。 現在,如果您不添加括號,似乎您只是在進行文字搜索,例如,您正在搜索的字符串中實際上帶有問號和感嘆號。

假設我們有字符串“ abc”和“ bbc”,並且我們想找到不以a開頭的字符串。 您在正則表達式后面的外觀將如下所示。

(?<!a)b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM