正则表达式 - 特殊字母字符? - Python

1 投票
2 回答
761 浏览
提问于 2025-04-15 20:13

我有一串简单的名字,比如 Márquez

但是因为 á 这个字符,(?< name >[a-zA-Z]+) 似乎不太管用!

如果能帮忙就太感谢了!

2 个回答

0

对于Python 3之前的版本,你可能需要启用地区设置:

import locale
locale.setlocale(locale.LC_ALL, '')

然后在你的正则表达式中使用 re.LOCALE 选项:

re.findall('\w+', 'Márquez', re.LOCALE)

不过,使用Unicode可能是更好的选择,尽管这需要将数据从本地编码解码,并重新编码回去。

3

你可以使用

\w+

并加上unicode标志。我想你的名字里应该没有数字或者下划线的风险。

>>> re.findall('\w+', 'Márquez', re.U)
['Márquez']

你似乎在问号后面漏掉了一个P(?P< name >[a-zA-Z]+)

撰写回答