我经常发现自己需要一种工具,可以让我:
在大文件中搜索多个多行正则表达式模式,并使用反向引用替换它们。
我应该:
示例
我有一个包含数千个条目的xml文档。大约有100个条目具有已知值字段,需要将其删除。我可以为每个条目构建一个正则表达式。除了值字符串部分之外,100个条目的表达式相同。要么这个工具需要能够为每个值循环一次,要么只需要在表达式中使用100个OR项(|)循环一次(这将是巨大的)。在这种情况下,我用空格替换匹配,但在其他情况下,我重新格式化文本并重新插入值字段。
答案 0 :(得分:2)
我估计你应该在Python中写下这个东西。 python re库很棒:
# get the re library
import re
# this is the line to process
xml_line = "<stuff><bad i_am_naughty=\"True\"></bad></stuff>"
# compile a regex
exp = re.compile ("(.*)(<bad.*bad>)(.*)")
# run the regex on the line
match = exp.search (xml_line)
# print out the groups the regex found
print match.groups ()
N.B。您还可以使用python XML parsing libraries删除不需要的元素。使用python XMl解析简化了我在我的示例中忽略的一些复杂性(多行等)。代替Python XML解析示例,这个question在Python中解析XML时有一些很好的答案。
答案 1 :(得分:1)
我不太确定你的数据是什么样的,但我会考虑在三遍中用python编写工具:
答案 2 :(得分:0)
我建议不要使用正则表达式。通常应该使用XML工具处理XML。为什么不使用XSLT?
答案 3 :(得分:0)