您好我想搜索的東西在文件中匹配看起來與此類似:省略或排除正則表達式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