如何使用正则表达式将属性替换为空字符串?

我正在解析一个XML,我想用空字符串替换一个属性。
每个节点都有一个属性,如下所示:
Id="1hyx36uhpi780iq8oiu355"
我正在使用以下正则表达式模式,但它不起作用
D=re.earch('(id="([a-z0-9A-Z]+)")*',文本)

# 回答1


它在哪方面不起作用?
您是否正在使用诸如minidom之类的XML解析器来解析XML?如果没有,您应该考虑这样做。
如果直接解析字符串,您尝试过逐行解析吗?
这似乎奏效了:

选择 | 换行 | 行号
  1. >>> import re
  2. >>> patt = re.compile(r'id="[a-z0-9A-Z]+"')
  3. >>> s = 'id="1hyx36uhpi780iq8oiu355"   xxxxx xxxxx id="46fhrt5976jkfjhrh"'
  4. >>> s1 = patt.sub('id=""', s)
  5. >>> s1
  6. 'id=""   xxxxx xxxxx id=""'
  7. >>> 
# 回答2


阿什蒂普罗,
看起来您的语句中有一个有问题的无限重复运算符:

选择 | 换行 | 行号
  1. d = re.search('(id="([a-z0-9A-Z]+)")*',text)
  2.     HERE  --------------------------^
  3.  

我认为这会导致不受欢迎的零长度匹配。
另外,我不知道您的数据流是什么样子的,但是您可能还需要检查属性值中是否有单引号(')。
祝你好运!

标签: python

添加新评论