python - 正则表达式匹配所有非字母,不包括变音符号(python)

标签 python regex python-2.7 unicode regex-negation

我找到了这个优秀的指南:http://www.regular-expressions.info/unicode.html#category这给出了一些关于如何将 non 字母与以下正则表达式匹配的提示:

\P{L}

但是这个正则表达式也会考虑非字母 à 编码为 U+0061 U+0300(如果我理解得很好的话)。 例如使用 regex python 中的模块以下代码段:

all_letter_doc = regex.sub(r'\P{L}', ' ', doc)

purè 转换为 pur

指南中提供了如何将所有字母与以下内容匹配:

\p{L}\p{M}*+

在实践中我需要否定它,但我不知道如何获得它。

最佳答案

由于您使用的是 Python 2.x,您的 r'\P{L}' 是一个字节字符串,而您的输入是 Unicode。您需要将模式设为 Unicode 字符串。查看PyPi regex reference :

If neither the ASCII, LOCALE nor UNICODE flag is specified, it will default to UNICODE if the regex pattern is a Unicode string and ASCII if it’s a bytestring.

因此,您需要使用 ur'\P{L}'u' ' 替换模式。

如果您想匹配除字母和变音符号以外的 1+ 个字符,您将需要 ur'[^\p{L}\p{M}]+' 正则表达式。

关于python - 正则表达式匹配所有非字母,不包括变音符号(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38557116/

相关文章:

python - 如何防止引发 asyncio.TimeoutError 并继续循环

regex - 用于在子字符串中用破折号替换空格的正则表达式。

javascript - 如何用正则表达式打断字符串

python - tkinter LabelFrame 没有附加小部件

python - Python有多快?

python - 从给定的二维方差创建二维高斯随机场

python - scrapy 具有多个帐户或使用不同的帐户重新登录(不同的 cookie)

python - Python Django RegExp错误

python - 以自定义时间格式记录

Python 快速入门 : WARNING:oauth2client. util:__init__() 最多接受 4 个位置参数(给定 5 个)