gpt4 book ai didi

python - 我如何报告在整个脚本中从未匹配的任何正则表达式?

转载 作者:太空宇宙 更新时间:2023-11-03 17:43:52 24 4
gpt4 key购买 nike

我经常遍历文件中的行并应用多个正则表达式替换,有时我会犯错误,以至于其中一个表达式永远不会匹配任何行。我怎样才能找出哪个正则表达式不匹配而不用检查弄乱我的代码?是否有任何脚本语言为此提供元编程工具或调试工具?输入示例:

 foo
bar
baz

示例脚本(伪代码):

 for each line of the file:
s/foo/lorem/
s/bazzz/ipsum/ # this never matches on any line and should get reported

编辑:我更喜欢 Mark Thomas 的解决方案,因为我希望逐行读取文件并在第一次匹配后停止应用替换。下次我应该把我的要求说清楚。元编程解决方案会有额外的好处,因为我经常逐行进行更复杂的特定于案例的处理,尽管我认为从答案中获得灵感我可能会自己想出一个 ruby​​ 扩展方法,这样我就可以替换 gsub!gsub_debug! 用于调试,并在程序运行结束时获取所有不匹配正则表达式的报告。

最佳答案

在 ruby 中,gsub!如果没有找到模式,就地修改字符串并返回 nil:

text = "foo
bar
baz"

replacements = [['foo', 'lorem'], ['bazzz', 'ipsum']]
# or with regexen:
replacements = [[/foo/, 'lorem'], [/bazzz/, 'ipsum']]


replacements.each do |pattern, replacement|
unless text.gsub!(pattern, replacement)
puts "#WARNING: #{pattern} wasn't found"
end
end

puts text

输出:

WARNING: bazzz wasn't found
lorem
bar
baz

请注意,一个接一个地应用替换可能会导致错误。

关于python - 我如何报告在整个脚本中从未匹配的任何正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45434618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com