在 Python 3.7(在 Windows 64 位上测试)中,使用 RegEx .* 替换字符串会导致输入字符串重复两次!在 Python 3.7.2 中:>>> import re>>> re.sub(\'.*\', \'(
在 Python 3.7(在 Windows 64 位上测试)上,使用 RegEx 替换字符串 .*
会导致输入字符串重复两次!
在 Python 3.7.2 上:
>>> import re
>>> re.sub(".*", "(replacement)", "sample text")
'(replacement)(replacement)'
在 Python 3.6.4 上:
>>> import re
>>> re.sub(".*", "(replacement)", "sample text")
'(replacement)'
在 Python 2.7.5(32 位)上:
>>> import re
>>> re.sub(".*", "(replacement)", "sample text")
'(replacement)'
出了什么问题?如何解决?
这是一个常见的正则表达式问题,它影响很多正则表达式类型,请参阅相关
有几种方法可以解决此问题:
.*
: re.sub("^.*$", "(replacement)", "sample text")
count=1
: print( re.sub(".*", "(replacement)", "sample text", count=1) )
*
为 +
: print( re.sub(".+", "(replacement)", "sample text") )
查看 Python 演示 :
import re
# Adding anchors:
print( re.sub("^.*$", "(replacement)", "sample text") ) # => (replacement)
# Using the count=1 argument
print( re.sub(".*", "(replacement)", "sample text", count=1) ) # => (replacement)
# If you want to replace non-empty lines:
print( re.sub(".+", "(replacement)", "sample text") ) # => (replacement)