我想用*
替换字符串中的所有.
(之前没有.*
)。
预期结果-
我尝试re.sub("(?!\.)\*", ".*", "foo*")
替换所有此类情况,但这似乎不起作用。
>>> re.sub("(?!\.)\*", ".*", "foo.*")
'foo..*'
我在这里缺少什么的帮助吗?
答案 0 :(得分:2)
您可以使用negative lookbehind (?<!\.)
断言左侧不是点:
(?<!\.)(\*)
例如:
test_str = """foo*
foo.*
"""
result = re.sub(r"(?<!\.)(\*)", r".\1", test_str)
print (result)
结果
foo.*
foo.*
答案 1 :(得分:2)
您正在使用一个负数。 先行((?!...)
),而不是先行((?<!...)
),请参阅
import re
string = """
foo* --> foo.*
foo.* --> foo.*
"""
rx = re.compile(r'(?<!\.)\*')
string = rx.sub('.*', string)
print(string)
答案 2 :(得分:0)
您是否尝试过这样做:
[^\.]\*