【发布时间】:2010-10-28 03:18:35
【问题描述】:
正则表达式语言使用\B来包含A..Z、a..z、0..9和_,\b定义为单词边界。
如何编写一个匹配所有有效西班牙语单词的正则表达式,包括以下字符:á、í、ó、é、ñ 等?
我正在使用 .NET。
【问题讨论】:
正则表达式语言使用\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。
【讨论】: