Maison > Questions et réponses > le corps du texte
<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
Faites d'abord correspondre le '<....>' extérieur, puis faites correspondre le ' et le " intérieur :
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
Mise à jour, je comprends le sens de la question. Au départ, je l'avais mal comprise comme remplaçant les éléments entre guillemets, mais maintenant je comprends que je dois remplacer les guillemets eux-mêmes.
<([^<>]*)['"]([^<>]*)>
Parce que nous avons uniquement modifié les guillemets et laissé les autres parties inchangées, nous ne voulons pas capturer les guillemets mais capturer des éléments autres que les guillemets, puis les remplacer par
<aaa>
Ceci remplace les guillemets par aaa. Veuillez noter qu'un seul guillemet peut être remplacé à la fois. Je suggère de faire d'abord correspondre le contenu de la balise
<([^<>]*=[^<>]*)>
Alors correspond
['"]
Remplacez par
aaa
——Ce qui suit est la mauvaise réponse originale——
Donnez un exemple
class="(.*?)"
L'explication est d'ajouter des guillemets doubles après class= et d'ajouter le moins de caractères possible jusqu'à un autre guillemet double