扫码关注官方订阅号
"哈哈"
比如这段代码,我想替换所有标签<>内的双引号以及单引号为"aaa",而其他地方的引号不受影响该怎么写
认证0级讲师
先匹配外层的 ‘<....>',再匹配内部的 ' 和 ":
import re ss = ''' <p class="red" id='123' onclick="do()"> <h1>"哈哈"</h1> <a href="1" title="123"></a> </p> ''' def quoterepl(matchobj): pattern = re.compile('\'|"') return pattern.sub('aaa', matchobj.group(0)) print re.sub('<[^<>]+?>', quoterepl, ss)
更新,明白题主的意思了,原来误解为把引号内部的东西替换,现在才明白是要把引号本身替换掉。
<([^<>]*)['"]([^<>]*)>
因为我们只改引号,其他地方不变,所以我们其实不是要捕获引号而是要捕获引号之外的东西,然后替换为
<\1aaa\2>
这样就把引号替换为了aaa,要注意这里一次替换只能替换一个引号。我建议先匹配出<标签内的东西
<([^<>]*=[^<>]*)>
然后匹配
['"]
替换为
aaa
——以下是错误的原答案——举一个为例
class="(.*?)"
解释起来就是class=后面加双引号加尽可能少的字符直到另一个双引号
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
先匹配外层的 ‘<....>',再匹配内部的 ' 和 ":
更新,明白题主的意思了,原来误解为把引号内部的东西替换,现在才明白是要把引号本身替换掉。
因为我们只改引号,其他地方不变,所以我们其实不是要捕获引号而是要捕获引号之外的东西,然后替换为
这样就把引号替换为了aaa,要注意这里一次替换只能替换一个引号。我建议先匹配出<标签内的东西
然后匹配
替换为
——以下是错误的原答案——
举一个为例
解释起来就是class=后面加双引号加尽可能少的字符直到另一个双引号