我希望转换以下内容:
“一些文本http://one.two.three.source.com更多文本。更多文本更多文本http://source.com更多文本。更多文本 http://one.source.com更多文本更多文本。更多文字http://one.two.source.com更多文字更多文字”
对此:
“一些文本http://one_two_three.target.com更多文本更多文本更多文本http://target.com更多文本更多文本 http://one.target.com更多文本更多文本更多文本http://one_two。 target.com更多文字更多文字”
我希望转换'.' 在大量文本中将每个子域分隔为“_”,问题是我想让它以是否有子域为条件。我无法预测文本的其余部分,并且只需要为 url 模式进行转换。
这是我到目前为止所拥有的:
src = 'source.com'
dst = 'target.com'
reMatch = r'http(?P<a>s?):(?P<b>\\?)/(?P<c>\\?)/(?P<d>([^.:/]+\.)?)(?P<e>([^.:/]+\.)?)(?P<f>([^.:/]+\.)?)' + src
p = re.compile(reMatch, re.IGNORECASE)
reReplace = r'http\g<a>:\g<b>/\g<c>/\g<d>\g<e>\g<f>' + dst
p.sub(reReplace, content)
它仅将 'source.com' 替换为 'target.com' 并复制子域(最多 3 个)但不替换 '.' 在子域之间使用“_”。