正则表达式在我的Python脚本中将“ñ”读为“:”

问题描述 投票:0回答:2

在我搜索的数据中,每张发票通常都有一行:

Customer Name: Kate Fakename Email Address: [email protected]

我一直在使用:

cust = re.search(r"Customer Name: [A-Z a-z'.-]+", text)

它返回:

Kate Fakename Email Address

我只需单独删除“电子邮件地址”即可。

但是后来我打了一个名字里带有“ñ”的顾客。我将符号添加到正则表达式搜索中:

cust = re.search(r"Customer Name: [A-Z a-z'.-ñ]+", text)

现在它返回了:

Kate Fakename Email Address: [email protected]

“:”不再阻止它继续?这里发生了什么?我的代码合法地只有一个字符不同。

python regex special-characters
2个回答
0
投票

在您所做的位置添加 ñ 意味着它允许 之间的字符范围内的任何字符。和ñ。

这应该有效:

Customer Name: [A-Z a-zñ'.-]+

0
投票

似乎你的正则表达式将方括号内的连字符(-)作为点(.)之间的范围,谁知道呢。

要解决这个问题,你可以这样用 backslack 来逃避连字符

cust = re.search(r"Customer Name: [A-Z a-z'.\-ñ]+", text)
© www.soinside.com 2019 - 2024. All rights reserved.