Python正则表达式异常

1 投票
3 回答
510 浏览
提问于 2025-04-15 22:19

我想知道怎么在所有不是字母和数字的字符上进行分割,但要排除撇号(')。

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)或者撇号的东西。

撰写回答