这是一个关于问题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/