Python正则表达式替换字符串部分的多次出现
我有一块包含多个Python正则表达式替换字符串部分的多次出现,python,regex,Python,Regex,我有一块包含多个标记的HTML。标记的当前格式为: (我还没有测试过) 但是我不确定如何在HTML中每次出现标记时都这样做您需要捕获文件名作为一个组,然后可以一次性替换它: <img width="580" height="183" src="{{media url="wysiwyg/acidalkalinetable.jpg"}}" alt="acid alkaline table" title="Body pH Balance"> 这会在整个文件名(包括扩展名)周围放置一个捕获
标记的HTML。标记的当前格式为:
(我还没有测试过)
但是我不确定如何在HTML中每次出现
标记时都这样做您需要捕获文件名作为一个组,然后可以一次性替换它:
<img width="580" height="183" src="{{media url="wysiwyg/acidalkalinetable.jpg"}}" alt="acid alkaline table" title="Body pH Balance">
这会在整个文件名(包括扩展名)周围放置一个捕获组((…)
),该扩展名本身现在使用一个非捕获(?:…)
组,从而导致:
content = '<img width="580" height="183" src="/images/stories/acidalkalinetable.jpg" alt="acid alkaline table" title="Body pH Balance">'
filename = re.search(r'/images/stories/\w+\.(jpg|png|gif)', content)
new_content = re.sub(r'/images/stories/\w+\.(jpg|png|gif)', '{{media url="wysiwyg/' + filename + '"}}', content)
>>re.sub(r'/images/stories/([\w%]+\.(?:jpg | png | gif)),r'{media url=“wysiwyg/\1”}},内容)
''
这使用\1
作为替换模式,请参阅
此
re.sub()
调用将用{{media url=“wisywig/。“}}}
语法替换所有匹配的/images/stories/。
路径。是否确定引用“{media url=“wysiwyg/acidalkalinetable.jpg”}}”
,wsiwyg部分在报价之外。是的,我正在清理要导入Magento的数据。它就是这样做的,它的图像标记感谢答案。您是否能够更新正则表达式,以便它可以处理文件名中可能的空格,例如%20something。jpg@iamjonesy:完成;您所需要做的就是将\w
扩展到一个characterclass,该characterclass添加%
作为一个选项。
content = '<img width="580" height="183" src="/images/stories/acidalkalinetable.jpg" alt="acid alkaline table" title="Body pH Balance">'
filename = re.search(r'/images/stories/\w+\.(jpg|png|gif)', content)
new_content = re.sub(r'/images/stories/\w+\.(jpg|png|gif)', '{{media url="wysiwyg/' + filename + '"}}', content)
re.sub(r'/images/stories/([\w%]+\.(?:jpg|png|gif))', r'{{media url="wysiwyg/\1"}}', content)
>>> re.sub(r'/images/stories/([\w%]+\.(?:jpg|png|gif))', r'{{media url="wysiwyg/\1"}}', content)
'<img width="580" height="183" src="{{media url="wysiwyg/acidalkalinetable.jpg"}}" alt="acid alkaline table" title="Body pH Balance">'