我在Perl中編寫腳本,需要從文本文件中提取一些信息。在Perl中匹配最後一個正則表達式模式
這就是我的代碼的樣子 - 字符串值組成,但代表所有可能的字符串變體。
my @alpha = ("abcdefgh(i) jklmno(pqrs3), uvwxyz",
"abcdefghi jklmn(opq1st), uvwxyz",
"abcdefghi jklmn(o_q(1s3)), uvwxyz",
"abcdef(gh)i jklmno(pq(1s3)), uvwxyz");
foreach my $line (@alpha){
if ($line =~ /\((.*\(?.*\)?)\),/){
print $1
}
}
我想捕獲最後一組括號(或括號中英文爲英式英語的人)之間的大文本。
請注意我使用「點」運算符,因爲我想匹配任何內容,文本,數字或其他特殊字符。
基本上我想打印出來:
pqrs3
opq1st
o_q(1s3)
pq(1s3)
但我不斷收到:
(i) jklmno(pqrs3) <-- not ok
opq1st <-- this is ok
opq(1s3) <-- this is also ok
gh)i jklmno(pq(1s3) <-- not ok
我在做什麼錯?或者甚至有可能以這種方式匹配?
任何幫助表示讚賞。
你總是希望_Last outer_比賽?您可能需要在這裏使用解析器。看看[這篇文章](http://stackoverflow.com/questions/133601/can-regular-expressions-be-used-to-match-nested-patterns)。 –
是的,我不需要一條正則表達式。我確實試圖在第一個括號和最後一個之間取得所有內容,但這並不奏效。 – Sid5427
還有一個問題:你知道有多少個括號組?在你的例子中,它似乎在1-2之間變化。 –