2024-10-01 09:28:46 发布
网友
关于stackoverflow,有很多关于如何只保留字符串中的字母字符的答案,最常见的是著名的regex '[^a-zA-Z]'。但这个答案是完全错误的,因为它假设每个人都只写英语。。。我原以为我可以否决所有这些答案,但最后我认为再问这个问题会更有建设性,因为我找不到答案。在
'[^a-zA-Z]'
在python中,有没有一种简单(或不……)的方法来只保留适用于所有语言的字符串中的字母字符?我想也许有一个库可以像javascript中的xregexp。。。我指的是英语,也包括法语、俄语、汉语、希腊语等等
对于Python3或Python2中的re.UNICODE标志,可以使用[^\W\d_]。在
re.UNICODE
[^\W\d_]
\W : If UNICODE is set, this will match anything other than [0-9_] plus characters classified as not alphanumeric in the Unicode character properties database.
所以[^\W\d_]是不是字母数字、数字或下划线的任何东西。换句话说,它是任何字母字符。:)
>>> import re >>> re.findall("[^\W\d_]", "jüste Ä tösté 1234 ßÜ א д", re.UNICODE) ['j', 'ü', 's', 't', 'e', 'Ä', 't', 'ö', 's', 't', 'é', 'ß', 'Ü', 'א', 'д']
为了避免这种复杂的逻辑,您还可以先删除数字和下划线,然后查找字母数字字符:
似乎^{}模块可能会有所帮助,因为它理解\p{L}或{}。在
\p{L}
This regex implementation is backwards-compatible with the standard ‘re’ module, but offers additional functionality.
>>> import regex as re >>> re.findall("\p{L}", "jüste Ä tösté 1234 ßÜ א д", re.UNICODE) ['j', 'ü', 's', 't', 'e', 'Ä', 't', 'ö', 's', 't', 'é', 'ß', 'Ü', 'א', 'д']
(用Pythonpython3.6测试)
[^\W\d\u]
对于Python3或Python2中的
re.UNICODE
标志,可以使用[^\W\d_]
。在所以
[^\W\d_]
是不是字母数字、数字或下划线的任何东西。换句话说,它是任何字母字符。:)先删除数字,然后查找“\w”
为了避免这种复杂的逻辑,您还可以先删除数字和下划线,然后查找字母数字字符:
^{pr2}$正则表达式模块
似乎^{} 模块可能会有所帮助,因为它理解}。在
\p{L}
或{(用Pythonpython3.6测试)
相关问题 更多 >
编程相关推荐