import re
host = 'www.example.com'
urls = [
'auth_redirect_url = aaa.bbb.ccc.com/auth-web',
'auth_redirect_url = aaa.bbb.ccc.com'
]
for url in urls:
print re.sub(r'(^auth_redirect_url\s*=\s*)(.*)(/.*)', r'\g<1>{}\g<3>'.format(host), url)
ホスト名「aaa.bbb.ccc.com」を「www.example.com」に置き換えますが、URL内のパスが存在しない可能性があるため、正規表現は機能しません。グループに0回以上マッチさせる方法はありますか?またはこの問題に対処する方法?Pythonのre.subを使ってグループを0回以上マッチさせて置き換える方法は?
です3.5+ ?後者の場合、 '(/.*)' - '(/.*)?'の後ろに '?'を追加することができます。 –
Python2.7、 '(/.*)'の後に '?'を追加してください。レポートエラー:不一致グループ – yyzhang14922
はい、そうです。回避策は、下に示すように2番目のグループを制限することです。または、内部のラムダを使用してください。 –