如何使用REGEX替换字符串中的确切分号?

时间:2015-12-11 07:49:47

标签: python regex

我需要删除所有出现的单个分号,但保留两次出现。

输入:

poop,hello\/# what;up,\wor;;ld; yolo| s|ag"j"d\nhdhf,\;;

预期产出:

poop hello    what up  wor;;ld  yolo| s|ag"j"d hdhf  ;;

所以,除了出现一个分号外,我能删除所有内容。

a=re.sub(r'[^\w|\d|(;;)|\|"]'," ",a)

其中a是显示在顶部的字符串。

但它给了我:

poop hello    what;up  wor;;ld; yolo| s|ag"j"d hdhf  ;;

这里有什么问题?

2 个答案:

答案 0 :(得分:1)

尝试:

s.replace(";;","$").replace(";"," ").replace("$",";;")

;;替换为$,而不是将;替换为空格而不是替换回;;

答案 1 :(得分:1)

你可以使用负向前瞻和负面的后视:

>>> re.sub(r'[^\w\d;|"]|(?<!;);(?!;)'," ",a)
'poop hello   what up  wor;;ld  yolo| s|ag"j"d nhdhf  ;;'