[英]Regular expression matches special character
我正在關注本教程 。
當我嘗試測試我的正則表達式時(方法轉儲來自linqpad以在控制台上顯示):
Regex.Match("a^7lowah", @"\ba\w*\b").Success.Dump();
它應匹配以“ a”開頭且在單詞末尾具有x個字母數字字符的單詞。
但是不幸的是上面的正則表達式匹配。
我對正則表達式的理解:
我究竟做錯了什么?
是的,正則表達式將匹配。
Pattern: \ba\w*\b
String: a^7lowah
*
表示“零或更多”。
因此,這將是匹配項:
如您所見,沒有單詞字符匹配,但是因為您要量化“零個或多個”,所以沒有關系-我們的指針會跳過結構的那部分,並且已經可以斷言單詞邊界了。
您可能想將*
改為+
。
另請閱讀:
它僅匹配您字符串的a
。
由於a
是單詞字符,而^
不是單詞字符,因此它們之間的空字符串定義了單詞邊界。 (對於\\b
)
在您的情況下, a
是匹配的,因為如上所述,其后緊跟單詞邊界。 原因是*
與前面的令牌的零個或多個字符匹配。
看這里 。
根據您的x
是1個或多個標記而不是0個或多個標記,您需要更改為\\ba\\w+\\b
。
問題不在於您的正則表達式,而在於您對成功的解釋。 正則表達式僅匹配“ a”,但這仍然是匹配項,並且成功為真。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.