在我搜索的数据中,每张发票通常都有一行:
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]
“:”不再阻止它继续?这里发生了什么?我的代码合法地只有一个字符不同。
在您所做的位置添加 ñ 意味着它允许 之间的字符范围内的任何字符。和ñ。
这应该有效:
Customer Name: [A-Z a-zñ'.-]+
似乎你的正则表达式将方括号内的连字符(-)作为点(.)之间的范围,谁知道呢。
要解决这个问题,你可以这样用 backslack 来逃避连字符
cust = re.search(r"Customer Name: [A-Z a-z'.\-ñ]+", text)