用于大型搜索和替换的正则表达式工具

时间:2009-04-02 01:17:32

标签: regex

我经常发现自己需要一种工具,可以让我:

在大文件中搜索多个多行正则表达式模式,并使用反向引用替换它们。

我应该:

  1. 花费2个小时来构建自己的工具
  2. 使用某人已经建造的东西(请建议)
  3. 学会使用一种特别擅长此类事物的语言(Perl?)

  4. 示例
    我有一个包含数千个条目的xml文档。大约有100个条目具有已知值字段,需要将其删除。我可以为每个条目构建一个正则表达式。除了值字符串部分之外,100个条目的表达式相同。要么这个工具需要能够为每个值循环一次,要么只需要在表达式中使用100个OR项(|)循环一次(这将是巨大的)。在这种情况下,我用空格替换匹配,但在其他情况下,我重新格式化文本并重新插入值字段。

4 个答案:

答案 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编写工具:

  1. 将XML路径加上variable = value的文件转换为XML.path.variable = value
  2. 的行
  3. 对每一行应用大量正则表达式,可能从输出中删除行
  4. 将缩短的XML.path.variable = value行列表转换回XML

答案 2 :(得分:0)

我建议不要使用正则表达式。通常应该使用XML工具处理XML。为什么不使用XSLT

答案 3 :(得分:0)