San*_*rea 3 python regex unicode regex-negation python-2.7
我找到了这个优秀的指南:http://www.regular-expressions.info/unicode.html#category,它提供了一些关于如何将非字母与以下正则表达式匹配的提示:
\P{L}
Run Code Online (Sandbox Code Playgroud)
但是这个正则表达式会考虑非字母也à编码为U + 0061 U + 0300(如果我理解的话).例如,在python中使用regex模块的代码如下:
all_letter_doc = regex.sub(r'\P{L}', ' ', doc)
Run Code Online (Sandbox Code Playgroud)
将改变purè在pur
在指南中提供了如何匹配所有字母与以下内容:
\p{L}\p{M}*+
Run Code Online (Sandbox Code Playgroud)
在实践中我需要否定这一点,但我不知道如何获得它.
由于您使用的是Python 2.x,因此您r'\P{L}'是一个字节字符串,而您输入的是Unicode.您需要使模式成为Unicode字符串.参见PyPi regex参考:
如果既没有指定
ASCII,LOCALE也没有UNICODE指定标志,那么UNICODE如果正则表达式模式是Unicode字符串并且ASCII它是字节串,它将默认为.
因此,您需要使用ur'\P{L}'和u' '替换模式.
如果你想匹配除字母和变音符号以外的1个字符,你需要ur'[^\p{L}\p{M}]+'正则表达式.
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |