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

Regex 用于大型搜索和替换的正则表达式工具,regex,Regex,我经常发现自己需要一个工具,使我能够: 在一个大文件中搜索多个多行正则表达式模式,并使用反向引用替换它们 我应该: 花2个小时为自己打造这样一个工具 使用某人已经构建的东西(请建议) 学习使用一种在这方面特别擅长的语言(Perl?) 示例 我有一个包含数千个条目的xml文档。大约有100个带有已知值字段的条目需要删除。我可以为每个条目构建一个正则表达式。除值字符串部分外,100个条目的表达式相同。要么这个工具需要能够为每个值循环一次,要么在表达式中只循环一次100或100项(|)(这将是巨大的

我经常发现自己需要一个工具,使我能够:

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

我应该:

  • 花2个小时为自己打造这样一个工具
  • 使用某人已经构建的东西(请建议)
  • 学习使用一种在这方面特别擅长的语言(Perl?)

  • 示例

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

    我认为您应该将内容写入。python库非常棒:

    # 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 ()
    
    #获取re库
    进口稀土
    #这是要处理的行
    xml_line=“”
    #编译正则表达式
    exp=re.compile((.*)()(.*))
    #在线运行正则表达式
    match=exp.search(xml\u行)
    #打印出正则表达式找到的组
    打印match.groups()
    

    注意,你也可以用它去除你不想要的元素。使用python XMl解析简化了我在示例中忽略的一些复杂性(多行等)。代替Python XML解析示例,这有一些很好的答案,可以在Python中重新解析XML。

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

    < p>我不太清楚你的数据是什么样子,但是我会考虑在Python中写三遍:

  • 将XML path plus variable=value文件转换为XML.path.variable=value行
  • 对每行应用大量正则表达式,可能会从输出中删除行
  • 将XML.path.variable=值行的缩短列表转换回XML

  • 有大量模块可用于处理xml


    我认为他想使用正则表达式使选择其中一个值的表达式易于构造。XSLT中的替代方案将有大约100个匹配模板,对吗?