Python 匹配所有utf-8/unicode小写字母形式的适当正则表达式是什么
我想在拉丁块中匹配所有小写字母形式。平凡的“[a-z]”只匹配U+0061和U+007A之间的字符,而不是所有其他小写形式 我想匹配所有小写字母,最重要的是,EFIG语言中使用的拉丁块中所有重音小写字母 [a-zá-ý]是一个开始,但还有大量其他小写字符(请参阅)。有推荐的方法吗 仅供参考,我正在使用Python,但我怀疑这个问题是跨语言的 Python的内置“islower()”方法似乎做了正确的检查: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
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}
中为我工作。