在字符之间匹配空组的python正则表达式
我有一组选定的字符,我想用空格替换不在选定字符中的任何字符。 问题是正则表达式将我定义的字符之间的所有内容捕获为空组,并在所有字符之间添加一个空格。 这是我的代码:在字符之间匹配空组的python正则表达式,python,regex,Python,Regex,我有一组选定的字符,我想用空格替换不在选定字符中的任何字符。 问题是正则表达式将我定义的字符之间的所有内容捕获为空组,并在所有字符之间添加一个空格。 这是我的代码: import re text = "ABCDDDAB" text = re.sub('[^ABC]*',' ', text) # replace all characters that are not in ABC by a whitespace text = re.sub(' +',' ', text)
import re
text = "ABCDDDAB"
text = re.sub('[^ABC]*',' ', text) # replace all characters that are not in ABC by a whitespace
text = re.sub(' +',' ', text) # replace all trailing whitespaces with a single whitespace
print(text)
我希望结果是“abcab”
,但我得到的是“abcab”
我在在线正则表达式工具中尝试过这一点,我知道问题在于正则表达式在我定义的所有字符之间匹配空组,并用空格替换它们
我将附加一张在线正则表达式匹配的图片,粉红色的线条是我的问题,我不希望它们匹配,但它们确实匹配为组0:null
编辑:
在提问时,我不知道问题是使用
*
而不是+
。我想我不知何故在不知情的情况下定义了一些空组,有人可能会犯同样的错误。因此,将其标记为重复并不准确。您应该尝试以下表达式:
[^ABC]+
因为您希望“坏”字母至少出现一次
输出为:
ABC AB
你为什么不重复一次以上呢<代码>[^ABC]+@第四只鸟确实是为什么。我不知道我为什么这么做,浪费了这么多时间搔头。现在看起来很明显,谢谢,谢谢,我不知道我在想什么,但花了我几个小时,我想不出这么明显的事情。但我还是不提这个愚蠢的问题,也许有人也犯了同样的错误。