Regex Python 2.7是否更正语法以重新匹配Unicode字符串中的重音字符?

Regex Python 2.7是否更正语法以重新匹配Unicode字符串中的重音字符?,regex,python-2.7,unicode,Regex,Python 2.7,Unicode,我有一个带有单个参数的函数,该参数是unicode字符串,其中包含重音字符。我想在该字符串中找到一个或多个模式实例并将其打印出来 我不知道如何正确设置模式的格式,或者如何使用unicode正确地使用re.match,或者如何使用unicode提取match.groups()。使用ASCII要容易得多。啊 Python 2.7 sentence = "These characters, ÄÜ, are special." def findInSentence(sentence): pa

我有一个带有单个参数的函数,该参数是unicode字符串,其中包含重音字符。我想在该字符串中找到一个或多个模式实例并将其打印出来

我不知道如何正确设置模式的格式,或者如何使用unicode正确地使用re.match,或者如何使用unicode提取match.groups()。使用ASCII要容易得多。啊

Python 2.7

sentence = "These characters, ÄÜ, are special."

def findInSentence(sentence):

    pattern = re.compile("ÄÜ", re.UNICODE)
    return re.match(sentence, pattern).groups()

使用
re.search
而不是
re.match

re.match
锚定在字符串的开头,而
re.search
搜索整个字符串

search
match
的语法如下:

re.search(pattern, string, flags=0)
re.match(pattern, string, flags=0)

您已经反转了模式和字符串。

正确使用Unicode有许多问题:

  • 声明源文件的编码
  • 以声明的编码保存文件
  • 使用Unicode字符串
  • 此外,如@M42所指出的,正确使用
    re.search

    您的搜索模式中也没有
    groups()
    ,因此使用
    .group(0)
    打印匹配项(如果存在)

    请注意,在本例中不需要使用
    re.UNICODE
    ,因为它只影响特殊匹配序列
    \w
    \w
    \b
    \b
    \d
    \s
    \s
    的工作方式,并且它们没有被使用

    # coding: utf-8
    import re
    
    sentence = u"These characters, ÄÜ, are special."
    
    def findInSentence(sentence):
        pattern = re.compile(u"ÄÜ", re.UNICODE)
        return re.search(pattern, sentence).group(0)
    
    print findInSentence(sentence)
    
    输出:

    ÄÜ
    

    那不行。我无法对字符串进行编码或使用re。函数不会出错。@user1473511:交换模式和字符串,请参阅我的编辑。句子=“这些字符是特殊的。”此行会抛出一个错误。谢谢。这是一个问题,但是还有其他一些事情阻止了控制台的工作。再次感谢你。