2016-12-23 3 views
0
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回以上マッチさせて置き換える方法は?

+0

です3.5+ ?後者の場合、 '(/.*)' - '(/.*)?'の後ろに '?'を追加することができます。 –

+0

Python2.7、 '(/.*)'の後に '?'を追加してください。レポートエラー:不一致グループ – yyzhang14922

+0

はい、そうです。回避策は、下に示すように2番目のグループを制限することです。または、内部のラムダを使用してください。 –

答えて

0

あなたの第2のグループは/以外のすべてをキャプチャすることができ助けるかもしれない:

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) 

出力:それはPythonの2から3.4またはのために

auth_redirect_url = www.example.com/auth-web 
auth_redirect_url = www.example.com 
+0

ありがとう、本当に助けてください:) – yyzhang14922

0

この方法は、あなたが

text_filtered = re.sub(r'<p ([^>]*)>', '<p>', text_filtered) # remove the other field from p tag 
+0

モバイルアプリを使って申し訳ありません。 – rofelia09

関連する問題