通常情況下,當你調用SED,您可以撥打\1
引用的子匹配一把手,即:參考10個子匹配
<something> | sed "s/<regex>\(<regex>\)<regex>/\1/"
這將只取中間的正則表達式和刪除外的。
但是,如果你有多於9場比賽,你會怎麼做?只需編寫\10
不起作用,因爲它將被解釋爲take submatch number one and add a zero behind it
。
通常情況下,當你調用SED,您可以撥打\1
引用的子匹配一把手,即:參考10個子匹配
<something> | sed "s/<regex>\(<regex>\)<regex>/\1/"
這將只取中間的正則表達式和刪除外的。
但是,如果你有多於9場比賽,你會怎麼做?只需編寫\10
不起作用,因爲它將被解釋爲take submatch number one and add a zero behind it
。
謝謝,第一個實際上說(我只能測試明天)你可以使用perl而不是sed並且幾乎以相同的方式應用「s/in/out /」表達式,但功能更強大。這實際上相當有幫助!所以我投了你的第一個鏈接的副本。 – erikbwork 2012-08-06 19:27:33
我不確定SED,但在許多語言(JavaScript,紅寶石),有正則表達式實現允許子匹配(或反向引用,因爲它有時被稱爲),只支持\1
到\9
。 \10
是根本不允許的。
任何其他的反向引用都需要使用更復雜的解析器。
我認爲Perl允許它。 – 2012-08-06 17:55:04
一些正則表達式的實現,比如Python,_will_ accept'\ 10'等等,如果模式中有9個以上的捕獲組。 – MRAB 2012-08-06 19:12:38
您可以簡化它以減少捕獲組的數量嗎? – nhahtdh 2012-08-06 17:46:33