Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在字符之间匹配空组的python正则表达式_Python_Regex - Fatal编程技术网

在字符之间匹配空组的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]+@第四只鸟确实是为什么。我不知道我为什么这么做,浪费了这么多时间搔头。现在看起来很明显,谢谢,谢谢,我不知道我在想什么,但花了我几个小时,我想不出这么明显的事情。但我还是不提这个愚蠢的问题,也许有人也犯了同样的错误。