Rumah > Soal Jawab > teks badan
<p class="red" id='123' onclick="do()">
<h1>"哈哈"</h1>
<a href="1" title="123"></a>
</p>
比如这段代码,我想替换所有标签<>内的双引号以及单引号为"aaa",而其他地方的引号不受影响该怎么写
<p class=aaaredaaa id=aaa123aaa onclick=aaado()aaa>
<h1>"哈哈"</h1>
<a href=aaa1aaa title=aaa123aaa></a>
</p>
巴扎黑2017-04-18 09:18:45
Mula-mula padankan bahagian luar '<....>', kemudian padankan bahagian dalam ' dan ":
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)
伊谢尔伦2017-04-18 09:18:45
Kemas kini, saya faham maksud soalan pada asalnya saya salah faham sebagai menggantikan perkara di dalam tanda petikan, tetapi sekarang saya faham bahawa saya perlu menggantikan tanda petikan itu sendiri.
<([^<>]*)['"]([^<>]*)>
Oleh kerana kami hanya menukar tanda petikan dan membiarkan bahagian lain tidak berubah, kami sebenarnya tidak mahu menangkap tanda petikan tetapi untuk menangkap perkara selain daripada tanda petikan dan kemudian menggantikannya dengan
<aaa>
Ini menggantikan tanda petikan dengan aaa Sila ambil perhatian bahawa hanya satu tanda petikan boleh diganti pada satu masa. Saya cadangkan padankan kandungan tag
dahulu<([^<>]*=[^<>]*)>
Kemudian padankan
['"]
Gantikan dengan
aaa
——Berikut adalah jawapan asal yang salah——
Beri contoh
class="(.*?)"
Penjelasan adalah untuk menambah petikan berganda selepas kelas= dan menambah sesedikit aksara yang mungkin sehingga petikan berganda lagi