否定 类 正则表达式

negation classes regex

我写了这个正则表达式来标记文本:"\b\w+\b"

但有人建议我将其转换为 \b[^\W\d_]+\b

任何人都可以向我解释为什么第二种方式(使用否定)更好吗?

谢谢

第一个匹配所有字母、数字和下划线。根据正则表达式引擎,这可能包括 unicode 字母和数字。 (顺便说一句,在这种情况下边界这个词是多余的。)

第二个正则表达式只匹配字母(不包括非单词字符、数字和下划线)。由于单词边界,它只会匹配它们,如果它们被非单词字符或字符串的 start/end 包围。

如果您的正则表达式引擎支持此功能,您可能希望使用 [[:alpha:]]\p{L}(或 [A-Za-z] 在非 unicode 的情况下)来让您的意图更清晰。