首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >匹配所有utf-8/unicode小写字母格式的正确正则表达式是什么

匹配所有utf-8/unicode小写字母格式的正确正则表达式是什么
EN

Stack Overflow用户
提问于 2011-03-08 04:25:23
回答 3查看 8.4K关注 0票数 23

我想匹配拉丁区块中的所有小写字母形式。简单的'a-z‘只匹配U+0061和U+007A之间的字符,而不是所有其他小写形式。

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

A-zà-a是一个开始,但仍然有许多其他的小写字符(参见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 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-08 05:21:44

Python目前不支持正则表达式中的Unicode属性。有关支持它们的Ponyguruma library的链接,请参阅this answer

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

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

票数 13
EN

Stack Overflow用户

发布于 2013-06-12 20:04:17

看起来像是this recipe在旧的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')

仍然是相关的。

票数 8
EN

Stack Overflow用户

发布于 2011-03-08 04:38:52

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

编辑:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5224835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档