簡體   English   中英

正則表達式匹配特殊字符

[英]Regular expression matches special character

我正在關注本教程

當我嘗試測試我的正則表達式時(方法轉儲來自linqpad以在控制台上顯示):

Regex.Match("a^7lowah", @"\ba\w*\b").Success.Dump();

它應匹配以“ a”開頭且在單詞末尾具有x個字母數字字符的單詞。

但是不幸的是上面的正則表達式匹配。

我對正則表達式的理解:

  • “ \\ b”(單詞的開頭)
  • “ a”(只是字母a)
  • “ \\ w”(字母數字字符)
  • “ *”(重復上一個學期)
  • “ \\ b”(單詞的結尾)

我究竟做錯了什么?

是的,正則表達式將匹配。

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.

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