- 此问题在此处已有答案**:
Python re.sub with a flag does not replace all occurrences(3个答案)
2天前关闭。
我有以下字符串:
param = ' average(provider.cpuUtilization.Average) AS ECSCpuUtilization '
我有下面的正则表达式要说匹配尽可能多的空格前as和后as和单词后:
as_regex = r"\s+as\s+\w+"
我已经在regex测试器中验证了这与我正在寻找的相匹配。
我做如下调用:
new_param = re.sub(as_regex, '', param, re.IGNORECASE)
new_param是和之前一样的字符串。它让我发疯。调用
re.search(as_regex, param, re.IGNORECASE)
返回字符串AS ECSCpuUtilization
,和我想要的完全一样。re.match没有,但我认为这不重要,因为如果我没弄错的话,re.sub和www.example.com是一样的。re.search if I'm not mistaken.
我忽略了什么?如果有什么需要澄清的请告诉我。
2条答案
按热度按时间pgx2nnw81#
用关键字参数设置标志。标志实际上应该作为第五个位置参数传递,而不是第四个。请参阅
re.sub
文档。或者,您可以在正则表达式本身中使用
(?i)
来忽略大小写。n53p2ov02#
问题出在
re.sub()
函数的第二个参数上,该参数应该是替换字符串,但当前为空字符串,导致替换后字符串保持不变。尝试将其更改为所需的替换字符串,例如: