繁体   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