python替换所有标点符号 正则_Python正则替换所有标签内的引号

1

2

3

4<div class="red" id='123' οnclick="do()">

<h1>"哈哈"</h1>

<a href="1" title="123"></a>

</div>

比如这段代码,我想替换所有标签<>内的双引号以及单引号为”aaa”,而其他地方的引号不受影响该怎么写

1

2

3

4<div class=aaaredaaa id=aaa123aaa οnclick=aaado()aaa>

<h1>"哈哈"</h1>

<a href=aaa1aaa title=aaa123aaa></a>

</div>

先匹配外层的 ‘<….>’,再匹配内部的 ‘ 和 “:

1

2

3

4

5

6

7

8

9

10

11

12

13

14import re

ss = '''

<div class="red" id='123' οnclick="do()">

<h1>"哈哈"</h1>

<a href="1" title="123"></a>

</div>

'''

def quoterepl(matchobj):

pattern = re.compile('\'|"')

return pattern.sub('aaa', matchobj.group(0))

print re.sub('<[^<>]+?>', quoterepl, ss)

更新,明白题主的意思了,原来误解为把引号内部的东西替换,现在才明白是要把引号本身替换掉。

1<([^<>]*)['"]([^<>]*)>

因为我们只改引号,其他地方不变,所以我们其实不是要捕获引号而是要捕获引号之外的东西,然后替换为

1<\1aaa\2>

这样就把引号替换为了aaa,要注意这里一次替换只能替换一个引号。我建议先匹配出<标签内的东西

1<([^<>]*=[^<>]*)>

然后匹配

1['"]

替换为

1aaa

——以下是错误的原答案——

举一个为例

1class="(.*?)"

解释起来就是class=后面加双引号加尽可能少的字符直到另一个双引号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值