Re: [問題] 常規表示式的比對問題?

看板Perl作者 (開心)時間18年前 (2007/04/08 20:43), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串4/4 (看更多)
若將上述的程式改成三個if 則就會成立 但可以不要使用三個if就可以達到嗎@@? 因為用if elsif else的話 則只會進入其中一個條件而已 若我想抓出所有可能的結果的話 不知道除了使用3個if之外 perl還有其它更好的方式來達成嗎@@? 感謝:) ※ 引述《Yaowei (開心)》之銘言: : 承接本題目 : 若轉換後 由於 分成 212 122 221 : 而一個句子中經過$list轉換後有可能會出現是  : 2122 -->表示有可能是212或122 : 2212 -->表示有可能是221或212 : 1221 -->表示有可能是122或221 : 2112 -->表示有可能是221或112 : 2212 -->表示有可能是221或212 : 1221 -->表示有可能是122或221 : 若我想將這些片段取來及其相對應的組別 : 應該可以用perl來達到吧@@ : 有人有什麼不錯的方式嗎^^ : 因為若是用原本的程式跑的話 只是先比到第一個符合的就秀出分組 : 我有想過用while(/(212|122)/g) @@但若是降子的話則不就要改一大堆了@@ : ※ 引述《fuu0115 (充實計劃啟動)》之銘言: : : 給你參考看看! : : 利用一些取代把那些ACT, PTN取代成一個符號, : : 然後就可以利用一些規則把pattern過濾出來。 : : #!/usr/bin/perl -w : : use strict; : : open FH, "<$ARGV[0]" or die "file open fail:$!"; : : while (my $thisLine = <FH>) { : : if ($thisLine eq "") { : : next; : : } : : $thisLine =~ s{\s+$}{}; : : my $list; : : while ($thisLine =~ m{(ACT|PTN)}g){ : : $list .= $1; -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.165.150

04/09 00:33, , 1F
解出來了 透過使用HASH與substr的切字後即可達成^^
04/09 00:33, 1F
文章代碼(AID): #166EDnYm (Perl)
文章代碼(AID): #166EDnYm (Perl)