Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式替换字符串部分的多次出现_Python_Regex - Fatal编程技术网

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">'