![](/img/trans.png)
[英]How to insert backslash before a group with regex re.sub() in python
[英]How to re.sub() a optional matching group using regex in Python?
我的問題很簡單。
我有一個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"
當然,我不能只做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
順便說一句,如果你使用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'
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'
re.sub(r'url(#*.*)', r'url\1', test1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.