您好我想搜索的东西在文件中匹配看起来与此类似:省略或排除正则表达式Perl脚本
Start Cycle
report 1
report 2
report 3
report 4
End Cycle
....推移和..
我要搜索“开始循环”,然后拉出报告1,并从中报告3。我的正则表达式看起来像这样
(Start Cycle .*\n)(.*\n)(.*\n)(.*\n)
上述正则表达式选择开始周期,下三行..但我想从我的结果中省略第三行。那可能吗?或者任何更简单的perl脚本都可以完成? 我期待像结果:
Start Cycle
report 1
report 3
看起来不错,迈克 - 在列表环境很好使用数组切片,啜食模式和正则表达式。两个小问题。 (1)在例#1中,如果在循环中添加my @ block作为第一个命令,那么您将正确地确定数组的范围,并可以删除'@block =()'。看到这一些细节:http://stackoverflow.com/questions/845060/what-is-the-difference-between-my-and-our-in-perl/990945#990945。 (2)例#2有点误导,因为你根本不需要循环。如果您删除循环并使用'$ _ = '代替,您的代码将以相同的方式工作并更清楚地表达其行为。 – FMc 2009-11-26 15:15:04
@FM,感谢分享这些想法:)我不知道我的声明可以在这里自然地替换数组空行。感谢指针。而对于第二段代码,我同意,因为slup模式已启用,while循环不是真正的循环。我对这一段声明的理解绝对是错误的。 – Mike 2009-11-27 04:07:52
哇只是看起来像有多种方式在Perl中做到这一点。 :)我仍然是一个n00b – FatDaemon 2009-11-30 18:35:56