正则表达式语言使用 \B 来包含 A..Z、a..z、0..9 和 _,而 \b 定义为单词边界。
如何编写一个匹配所有有效西班牙语单词的正则表达式,包括:á、í、ó、é、ñ 等字符?
我正在使用.NET。
使用西班牙语语言环境并使您的正则表达式语言环境敏感。
您的正则表达式系统应该具有与 Python re.L
(又名re.LOCALE
)等效的东西,以使正则表达式依赖于语言环境,以便什么是单词字符,什么不随语言环境而变化,就像“单词边界”等一样。您是否要求一个补偿某些不支持语言环境的给定正则表达式系统的方法,无论如何都试图强制解决问题...?
这在很大程度上取决于您使用的语言(和正则表达式引擎)。
在 Perl 中,\w
匹配所有单词字符,无论语言或字母如何,并且/\b(\w+)\b/
(可能)匹配西班牙语单词以及英语单词或俄语单词。
在使用 PCRE 的语言中,\w
(因此可能\b
)不匹配 Unicode 字符。您可能需要构建自己的集合。我建议类似[\wáéíóúñ]
(匹配所有单词字符,加上你想要的重音字符),并且 PCRE 库必须预先构建支持 Unicode,然后才能工作。
如果你正在使用其他东西,祝你好运。一些正则表达式引擎甚至不支持 Unicode。