我想匹配拉丁 block 中的所有小写字母形式。平凡的 '[a-z]' 只匹配 U+0061 和 U+007A 之间的字符,而不是所有其他小写形式。
我想匹配所有小写字母,最重要的是,在 EFIGS 语言中使用的拉丁 block 中所有带重音的小写字母。
[a-zà-ý] 是一个开始,但仍有大量其他小写字符(参见 http://www.unicode.org/charts/PDF/U0000.pdf )。有推荐的方法吗?
仅供引用,我正在使用 Python,但我怀疑这个问题是跨语言的。
Python 的内置“islower()”方法似乎做了正确的检查:
lower = ''
for c in xrange(0,2**16):
if unichr(c).islower():
lower += unichr(c)
print lower
最佳答案
Python 目前不支持正则表达式中的 Unicode 属性。见 this answer链接到 Ponyguruma library确实支持它们。
使用这样的库,您可以使用 \p{Ll}
匹配 Unicode 字符串中的任何小写字母。
Unicode 标准中的每个字符都属于一个类别。 \p{Ll}
是小写字母的类别,而 \p{L}
包含“字母”类别之一中的所有字符(字母,大写字母;字母,小写;字母,标题;字母,修饰符;和字母,其他)。更多信息参见 Unicode Standard 的字符属性一章。 .或见 this page有关在正则表达式中使用 Unicode 的一个很好的解释。
关于python - 匹配所有 utf-8/unicode 小写字母形式的正确正则表达式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5224835/