我的问题很简单.
我有一个URL,有时它以特定字符结尾.如果它们存在,我想将它们添加到我的新URL.
test1 = "url#123"
test2 = "url"
r = re.sub(r"url(#[0-9]+)?", r"new_url\1", test1)
# Expected result: "new_url#123"
# Actual result: "new_url#123"
r = re.sub(r"url(#[0-9]+)?", r"new_url\1", test2)
# Expected result: "new_url"
# Actual result: "error: unmatched group"
Run Code Online (Sandbox Code Playgroud)
当然,我不能这样做re.sub("url", "new_url", test),因为例如它可能是"url/123",在这种情况下我不想做出修改.
您不能在替换字符串中使用可选匹配组.
以下方法怎么样?
>>> import re
>>> test1 = "url#123"
>>> test2 = "url"
>>> re.sub(r"url((?:#[0-9]+)?)", r"new_url\1", test1)
new_url#123
>>> re.sub(r"url((?:#[0-9]+)?)", r"new_url\1", test2)
new_url
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果你使用regex,你可以使用可选的匹配组:
>>> import regex
>>> test1 = "url#123"
>>> test2 = "url"
>>> regex.sub(r"url(#[0-9]+)?", r"new_url\1", test1)
'new_url#123'
>>> regex.sub(r"url(#[0-9]+)?", r"new_url\1", test2)
'new_url'
Run Code Online (Sandbox Code Playgroud)