如何使用正则表达式将ascii与非ascii匹配?

时间:2016-05-02 13:42:28

标签: python regex

我有以下字符串变量

string1 = "cafe ceramique"
string2 = "Café Céramique"

我想要一个匹配string1到string2的正则表达式。

以更通用的方式,如何将任何字符串ascii字符串与具有常规表达式的非ascii字符串匹配?

2 个答案:

答案 0 :(得分:2)

import unicodedata
string1 == unicodedata.normalize('NFKD', string2).encode('ASCII', 'ignore').decode('ascii')

在你的例子中,单词的第一个字母是不同的。你想要不区分大小写吗?

答案 1 :(得分:0)

您可以使用字符类和不区分大小写的修饰符:

rx = r'caf[eé]\ c[eé]ramique'

Python中,完整的示例如下:

import re
string = """cafe ceramique
Café Céramique"""
rx = r'caf[eé]\ c[eé]ramique'
matches = re.findall(rx,string,re.IGNORECASE)

请参阅a demo on regex101.com 一般来说,e是一个完全不同于éèê的其他字符,考虑the ASCII representation