Cómo implementar \ p {L} en expresiones regulares de python

Estaba tratando de hacer coincidir todas las cadenas que contienen una palabra en cualquier idioma. Mi búsqueda me llevó a \ p {…} que estaba ausente en el módulo Re de python. Pero encontré https://pypi.python.org/pypi/regex . Debería funcionar con los comandos \ p {…}. Aunque no es así.

Intenté analizar esas líneas:

7652167371 apéritif 78687 attaché 78687 époque 78678 kunngjøre 78678 ærbødig 7687 vår 12312 dfsdf 23123 322432 1321 23123 2312 привер 32211 оипвыола 

Con:

 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() 

El resultado es solo una palabra de caracteres latinos:

 12312 dfsdf 

Debes pasar unicode. (Tanto la expresión regular como la cadena)

 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})+$', ])