我的问题很简单。
我有一个网址,有时会以特定字符结尾。如果它们存在,我想将它们添加到我的新网址。
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"
当然,我不能只做re.sub("url", "new_url", test)
,因为例如它可能是“url / 123”,在这种情况下我不想做出修改。
答案 0 :(得分:8)
您无法在替换字符串中使用可选匹配组。
以下方法怎么样?
>>> 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
顺便说一句,如果你使用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'
答案 1 :(得分:0)
In [4]: re.sub(r"url(#[0-9]+|$)", r"new_url\1", test1)
Out[4]: 'new_url#123'
In [5]: re.sub(r"url(#[0-9]+|$)", r"new_url\1", test2)
Out[5]: 'new_url'
答案 2 :(得分:0)
re.sub(r'url(#*.*)', r'url\1', test1)