首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3regex与diacritics和连接线

Python3regex与diacritics和连接线
EN

Stack Overflow用户
提问于 2013-04-10 21:00:48
回答 1查看 959关注 0票数 7

名字在形式:凯撒,朱利叶斯将分裂为First_name朱利叶斯姓凯撒。

名称可能包含diacritics (áàé..)和连接体( ligatures (aáàé))。

在Python3.3中,这段代码似乎运行良好。

代码语言:javascript
复制
import re

def doesmatch(pat, str):  
    try: 
        yup = re.search(pat, str)
        print('Firstname {0} lastname {1}'.format(yup.group(2), yup.group(1)))
    except AttributeError:
        print('no match for {0}'.format(str))

s = 'Révèrberë, Harry'
t = 'Åapö, Renée'
u = 'C3po, Robby'
v = 'Mærsk, Efraïm'
w = 'MacDønald, Ron'
x = 'Sträßle, Mpopo'

pat = r'^([^\d\s]+), ([^\d\s]+)'
# matches any letter, diacritic or ligature, but not digits or punctuation inside the () 

for i in s, t, u, v, w, x:
    doesmatch(pat, i)

除了你的匹配。(名字中的数字不匹配),但我不知道是否有比非数字的非空间方法更好的方法。不过,更重要的是:我想要改进这个模式,这样它可以从小写字母中提取大写字母,但包括大写字母和连接体,最好也使用regex。似乎( As +)将匹配重音字符和组合字符。

这个是可能的吗?

(到目前为止,我看到的是:Dive into python 3 on UTF-8 vs Unicode;Unicode上的这个Regex tutorial (我没有使用);我认为我不需要new regex,但我承认我还没有看过它的所有文档)

EN

回答 1

Stack Overflow用户

发布于 2013-04-10 21:07:15

如果要使用标准库的re模块区分大写字母和小写字母,那么恐怕必须手动构建所有相关Unicode代码点的字符类。

如果您真的不需要这样做,请使用

代码语言:javascript
复制
[^\W\d_]

以匹配任何Unicode字母。此字符类匹配任何“非字母数字字符”(与“字母数字字符”相同)也不是数字或下划线的字符。

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

https://stackoverflow.com/questions/15936315

复制
相关文章

相似问题

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