[問題] 常規表示式的比對問題?
若我有三種可能分別是
1. PTN ACT PTN 、 ACT PTN PTN 與 PTN PTN ACT
而我想將輸入的句子丟入後判斷它們到底屬於哪一類?
p.s. 在各PTN ACT之間可能它們的前後有無字出現皆有可能
所以也是有可能會出現PTN 或 ACT的字
但我只想要取得最小的範圍就好,當上述的其中一種情況成立的話
例子如下:
AA ACT with PTN CC PTN
==>屬於第二類 ACT PTN PTN
------------------------------
that PTN ACT to of PTN at
==>屬於第一類 PTN ACT PTN
------------------------------
PTN ACT that ACT to and ACT PTN
==>屬於第一類 PTN ACT PTN
------------------------------
aaa ACT between PTN and PTN
==>屬於第二類
------------------------------
abcd and cc PTN cc PTN aa ACT
==>屬於第三類
只是我使用常規表示式若寫成下列的話
則第二類會永遠被比成第一類,根本不會比對到第二類去
while(<LINE>){
if(/(.*)?(PTN.*ACT.*PTN).*?/){
print "目前的情況是1:PTN ACT PTN\n";
print "1.抓到的\$&:",$&,$/;
print "-------------------------\n";
}elsif(/(.*)?ACT.*PTN.*PTN.*?/){
print "目前的情況是2:ACT PTN PTN\n";
print "2.抓到的\$&:",$&,$/;
print "-------------------------\n";
}else{
print "目前的情況是3:PTN PTN ACT\n";
print "3.抓到的\$&:",$&,$/;
print "-------------------------\n";
}
}
請問是否要改什麼地方會比較好呢^^?感謝
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.165.150
※ 編輯: Yaowei 來自: 140.116.165.150 (04/07 19:55)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 4 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章