.net - .NET 正则表达式中的 anchor

标签 .net regex

这是一个关于问题Check a string to see if all characters are hexadecimal values中给出的答案的问题.

建议的正则表达式如下:

\A\b[0-9a-fA-F]+\b\Z

现在,\A\Z似乎相当于 ^$分别。 \Z行为不同,因为它在匹配时允许在它后面有一个换行符(这可能是也可能不是)。

我不明白为什么 \b使用“在单词边界处匹配” anchor 。字符串的开头/结尾不总是单词边界吗?

最终,正则表达式可以重写为 ^[0-9a-fA-F]$具有相同的行为(忽略尾随 \n 问题)。我错过了什么吗?正在使用 \b需要一些奇怪的边缘情况?

测试用例:
123ABC -> true
123def -> Returns true
123g -> Returns false

最佳答案

word boundary \b 在非单词和单词字符之间匹配,如果第一个字符是单词字符,则匹配在字符串的开头,如果最后一个字符是单词字符,则匹配在字符串的末尾。

因此,\A\b[0-9a-fA-F]+\b\Z等于 \A[0-9a-fA-F]+\Z因为字符串中的所有字符都必须是单词字符([0-9] 数字或 [a-fA-F] 字母)才能与模式匹配。

在这种情况下,情况会有所不同:\A\b[0-9a-fA-F-]+\b\Z那只会匹配开头和结尾带有单词字符的字符串。

使用 \z匹配整个字符串,没有 \n最后允许。

关于.net - .NET 正则表达式中的 anchor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36639718/

相关文章:

android - 美元符号后的正则表达式抓取数字

java - : I have a requirement of matching the value request parameter with unicode charcters but it should not allow space 的正则表达式

c# - 在 C# 中创建空闲循环的好方法?

c# - 如何在 C# 中连接到 RavenHQ

c# - 带有 Log4Net 的控制台应用程序在 Debug 模式下编译,但在 Release 模式下不编译

c# - 在 C# 中扩展 [^,]+, 正则表达式

javascript - 正则表达式添加在中间

c# - HTML编码解码c#MVC4

c# - 连接到 OpenSSL 服务器时为 "Call to SSPI failed"

C# 正则表达式拆分街道地址 - 南非