[英]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.