Python正则表达式异常
我想知道怎么在所有不是字母和数字的字符上进行分割,但要排除撇号(')。
re.split('\W+',text)
这个方法可以用,但它也会在撇号上进行分割。我该怎么才能让这个规则不适用于撇号呢?
谢谢!
3 个回答
0
这里的回答都不管用,因为带引号的单词不会去掉它们的撇号。
对我有效的是:
re.split(r"\W'+|^'+|'+\W|'$|[^\w']+", text)
也就是说,要去掉:
非单词后面的撇号,或者
行首的撇号,或者
非单词前面的撇号,或者
当前的解决方案。
2
re.split(r"[^\w']+",text)
如果在字符类的开头加上一个^
,那么这个定义就会反转。所以[^\w']
就是[\w']
的反面,后者会匹配字母、数字、下划线和撇号。
3
试试这个:
re.split(r"[^\w']+",text)
注意这里的 w
是小写的,因为它代表所有的字母和数字(包括下划线)。字符类 [^\w']
指的是任何 不是(^
)字母、数字(\w
)或者撇号的东西。