Rol*_*Bly 7 python regex diacritics
表格中的名字:Ceasar,Julius将分为First_name Julius姓氏Ceasar.
名称可能包含变音符号(áàé..)和连字符(æ,ø)
这段代码似乎在Python 3.3中运行正常
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)
Run Code Online (Sandbox Code Playgroud)
除了你以外的所有人.(名称中的数字不匹配),但我想知道是否没有比非数字非空间方法更好的方法.更重要的是:我想改进模式,以便将大写字母与小写字母区分开来,但包括大写变音符号和连字符,最好也使用正则表达式.好像([AZ] [az] +),将匹配重音和组合字符.
这可能吗?
(到目前为止我看过的内容: 在UTF-8与Unicode之间潜入python 3 ; 关于Unicode的这个正则表达式教程(我没有使用);我想我不需要新的正则表达式但是我承认我没有'阅读所有文件)
如果你想使用标准库的模块来区分大小写字母re,那么恐怕你必须手动构建所有相关 Unicode 代码点的字符类。
如果您确实不需要这样做,请使用
[^\W\d_]
Run Code Online (Sandbox Code Playgroud)
匹配任何 Unicode 字母。此字符类匹配任何“不是非字母数字字符”(与“字母数字字符”相同)、也不是数字或下划线的内容。
| 归档时间: |
|
| 查看次数: |
553 次 |
| 最近记录: |