匹配我有這種複雜的正則表達式的Perl oneliner在bash:打印從複雜的regexp
/"_outV":([0-9]+),"_inV":([0-9]+),"_label":"([a-z\/]+)",/
,我需要解析文件(這是所有在一個單一的線)和僅輸出匹配組等
print $1 $2 $3
目前唯一幾乎工作 onliner是
perl -pe 'while(m/"_outV":([0-9]+)\,"_inV":([0-9]+)\,"_label":"([a-z\/]+)\"\,/g){print "$1 $2 $3\n";}'
但它最終還是在比賽結束後迴應整個文件。 我該如何解決這個問題?
我雖然刪除-p
選項會製造詭計,但事實並非如此。
一些示例數據會有所幫助。這看起來像你有什麼需要解析的,而你試圖用正則表達式來破解它,這可能是解決它的錯誤方法。 – Sobrique
我開始寫一個答案,但我現在必須走。我的意圖是說,你不應該爭取任何語言的單線程序。兩級轉義讓一切難以調試。除非你有一個很好的理由需要一行命令,並且我想不出一個有效的命令,那麼在一個單獨的文件中將其作爲一個Perl程序寫得更好。除了一個微不足道的正則表達式模式以外的任何東西都應該使用改變分隔符和使用'/ x'修飾符的選項。複雜的單線程適用於喜歡玩「技巧」的年輕程序員;他們不適合專業人士使用, – Borodin
@Borodin這並不複雜。 – 123