如何在 python 正则表达式中实现 \p{L}

ant*_*avy 5 python regex python-2.7

我试图匹配任何语言中包含一个单词的所有字符串。我的搜索使我找到了 Python 的 Re 模块中没有的 \p{...}。但我找到了https://pypi.python.org/pypi/regex。它应该与 \p{...} 命令一起使用。虽然没有。

我尝试解析这些行:

7652167371  apéritif
78687   attaché
78687   époque
78678   kunngjøre
78678   ærbødig
7687    vår
12312   dfsdf
23123   322432
1321    23123
2312    ??????
32211   ????????
Run Code Online (Sandbox Code Playgroud)

和:

def Pattern_compile(pattern_array):
    regexes = [regex.compile(p) for p in pattern_array]
    return regexes

def main():
    for line in sys.stdin:
        for regexp in Pattern_compile(p_a):
            if regexp.search (line):
                print line.strip('\n')

if __name__ == '__main__':
    p_a = ['^\d+\t(\p{L}|\p{M})+$', ]
    main()
Run Code Online (Sandbox Code Playgroud)

结果只是拉丁字符词:

12312   dfsdf
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 2

你应该传递unicode。(正则表达式和字符串)

import sys

import regex


def main(patterns):
    patterns = [regex.compile(p) for p in patterns]
    for line in sys.stdin:
        line = line.decode('utf8')
        for regexp in patterns:
            if regexp.search (line):
                print line.strip('\n')

if __name__ == '__main__':
    main([ur'^\d+\t(\p{L}|\p{M})+$', ])
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!我正在使用“re”。无论如何,`ur' '` 在 Python 3.7 中不是有效语法 (2认同)