Python 匹配所有utf-8/unicode小写字母形式的适当正则表达式是什么

Python 匹配所有utf-8/unicode小写字母形式的适当正则表达式是什么,python,regex,unicode,utf-8,Python,Regex,Unicode,Utf 8,我想在拉丁块中匹配所有小写字母形式。平凡的“[a-z]”只匹配U+0061和U+007A之间的字符,而不是所有其他小写形式 我想匹配所有小写字母,最重要的是,EFIG语言中使用的拉丁块中所有重音小写字母 [a-zá-ý]是一个开始,但还有大量其他小写字符(请参阅)。有推荐的方法吗 仅供参考,我正在使用Python,但我怀疑这个问题是跨语言的 Python的内置“islower()”方法似乎做了正确的检查: lower = '' for c in xrange(0,2**16): if un

我想在拉丁块中匹配所有小写字母形式。平凡的“[a-z]”只匹配U+0061和U+007A之间的字符,而不是所有其他小写形式

我想匹配所有小写字母,最重要的是,EFIG语言中使用的拉丁块中所有重音小写字母

[a-zá-ý]是一个开始,但还有大量其他小写字符(请参阅)。有推荐的方法吗

仅供参考,我正在使用Python,但我怀疑这个问题是跨语言的

Python的内置“islower()”方法似乎做了正确的检查:

lower = ''
for c in xrange(0,2**16): 
  if unichr(c).islower(): 
    lower += unichr(c)

print lower 

你可能想看看

然而,据我所知,没有表示“仅小写字符”的字符类或修饰符(并非每种语言都有小写字符),因此我想说,您可能必须使用多个范围(可能几乎与unicode块的数量相同)

编辑: 阅读更多关于这方面的内容,可能会有一种方法:
[\p{Ll}\p{Lo}]
,这意味着带有大写变体的小写字符或没有小写和大写的字符(例如,对于汉字)


正则表达式
[\p{Ll}\p{Lo}]+
与测试字符串
匹配你好用
x
替换匹配项将导致
xÀxHxПx
,而替换
[\p{Ll}]+
的匹配项将导致
xÀxHx你好Пx
(注意未匹配的汉字)。

如果使用
\p{L}
它将匹配任何unicode字母。检查示例。您还可以将其与
\p{M}
组合,以匹配包含变音标记的希伯来esqe语言。
(\p{L}\p{M})+

编辑:


我第一次错过了关于只有小写字母的部分。
\p{L}
将匹配所有的字母,
\p{Ll}
将只匹配小写字母。

Python目前不支持正则表达式中的Unicode属性。请参阅,以获取指向的链接,该链接不支持这些属性

使用这样的库,您可以使用
\p{Ll}
匹配Unicode字符串中的任何小写字母

Unicode标准中的每个字符都在一个类别中。
\p{Ll}
是小写字母的类别,而
\p{L}
包含其中一个“字母”类别中的所有字符(字母,大写;字母,小写;字母,标题;字母,修饰符;字母,其他)。有关详细信息,请参阅。的“字符属性”一章。或有关在正则表达式中使用Unicode的详细说明,请参阅。

看起来像是在旧的2005年发布的

import sys, re

uppers = [u'['] 
for i in xrange(sys.maxunicode): 
  c = unichr(i) 
  if c.isupper(): uppers.append(c) 
uppers.append(u']') 
uppers = u"".join(uppers) 
uppers_re = re.compile(uppers) 

print uppers_re.match('A')

仍然相关。

Python的正则表达式中没有
\p
。正则表达式的实现变化很大;Python的正则表达式中没有“小写字母”字符类。这很有趣,但Python正则表达式不包括\p:(仅供参考,'regex'模块()表示它支持Unicode字符属性,但它似乎对“\p{Ll}”不起作用,但对其他一些属性也起作用。YMMV.谢谢,@slacy-我不知道pypi regex module.Good。它还可以与.NET regex libabry(用西里尔文测试)一起使用。\p{Lu}到今天为止,
regex
模块在
\p{Ll}
中为我工作。