我经常发现自己需要一个工具来:
在大文件中搜索多个多行正则表达式模式并使用反向引用替换它们。
我应该:
- 花 2 个小时为自己构建这样一个工具
- 使用某人已经构建的东西(请建议)
- 学习使用一种特别擅长此类事情的语言(Perl?)
示例
我有一个包含数千个条目的 xml 文档。大约有 100 个具有已知值字段的条目需要删除。我可以为每个条目构建一个正则表达式。除了值字符串部分之外,100 个条目的表达式相同。该工具要么需要能够对每个值循环一次,要么只需要在表达式中使用 100 个 OR 项 (|) 循环一次(这将是巨大的)。在本例中,我将匹配项替换为空白,但在其他情况下,我会重新格式化文本并重新插入值字段。
最佳答案
我认为你应该把这件事写在 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 ()
注意您还可以使用python XML parsing libraries去掉你不想要的元素。使用 python XMl 解析简化了我在示例中忽略的一些复杂性(多行等)。代替 Python XML 解析示例此 question在 Python 中解析 XML 时有一些很好的答案。
关于用于大型搜索和替换的正则表达式工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/707952/