否定 类 正则表达式
negation classes regex
我写了这个正则表达式来标记文本:"\b\w+\b"
但有人建议我将其转换为 \b[^\W\d_]+\b
任何人都可以向我解释为什么第二种方式(使用否定)更好吗?
谢谢
第一个匹配所有字母、数字和下划线。根据正则表达式引擎,这可能包括 unicode 字母和数字。 (顺便说一句,在这种情况下边界这个词是多余的。)
第二个正则表达式只匹配字母(不包括非单词字符、数字和下划线)。由于单词边界,它只会匹配它们,如果它们被非单词字符或字符串的 start/end 包围。
如果您的正则表达式引擎支持此功能,您可能希望使用 [[:alpha:]]
或 \p{L}
(或 [A-Za-z]
在非 unicode 的情况下)来让您的意图更清晰。
我写了这个正则表达式来标记文本:"\b\w+\b"
但有人建议我将其转换为 \b[^\W\d_]+\b
任何人都可以向我解释为什么第二种方式(使用否定)更好吗?
谢谢
第一个匹配所有字母、数字和下划线。根据正则表达式引擎,这可能包括 unicode 字母和数字。 (顺便说一句,在这种情况下边界这个词是多余的。)
第二个正则表达式只匹配字母(不包括非单词字符、数字和下划线)。由于单词边界,它只会匹配它们,如果它们被非单词字符或字符串的 start/end 包围。
如果您的正则表达式引擎支持此功能,您可能希望使用 [[:alpha:]]
或 \p{L}
(或 [A-Za-z]
在非 unicode 的情况下)来让您的意图更清晰。