0
的這裏是我的正則表達式鏈接:https://www.regex101.com/r/jksOY7/1Perl的正則表達式匹配對字符串
我正在比賽我的正則表達式。但問題是輸出。我得到六場比賽。如果我使用while循環,那麼我會繼續輸出。
但我需要使用Perl來關聯如下。
[{
match1=> 'GEL-111111111-22222',
match2=> 'UP Ej011.2223'
},
{
match1=> 'FPL-222222222-33333',
match2=> 'UP Ek04112.2883'
},
{
match1=> 'HGL-333333333-44444',
match2=> 'UP Eg04213.2323'
}]
下面的Perl代碼只是返回繼續輸出。
while($tunnel =~ /(?![\-]+)([A-Z]{3,5}-[0-9\-\_]+)|(UP\s+([A-Za-z0-9\/]+.[0-9]+))/g){
print "\n";
print Dumper $1;
print "\n";
print "\n";
print Dumper $3;
print "\n";
}
有人可以請幫助,以獲得如上輸出?
爲了讓兩個捕獲組比賽時,你需要描述兩個羣體之間的內容,而不是使用交替'|'。另外第三個捕獲組(或第二個捕獲組,取決於你想要的)和lookahead是無用的,刪除它們。其他的事情,你需要逃避的點。 –
不是一個真正的解決方案,而是一種優化:https://www.regex101.com/r/jksOY7/2 - 同時還有一個分支重置:https://www.regex101.com/r/jksOY7/3 – Jan
你可以顯示你想要的輸出嗎? – zdim