Re: [問題] 回傳抓到數值的位置

看板Perl作者 (What?)時間16年前 (2009/04/07 00:06), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/4 (看更多)
※ 引述《adu (^_^)》之銘言: : ※ 引述《deh3215 ()》之銘言: : : #!/usr/bin/perl : : my $mainstring = "12345678901234567890HERE12345678901234567890"; : : my $substring = "HERE"; : : print my $first = index($mainstring, $substring); : : 結果:20 #---從0開始 : : 終止位置加HERE長度就可求出....... : 請問版大,想要從一串字元中把 特定字元前後、位置 抓出 : i.e. : "123456here7890A1234567890Bhere1234567890C12wow34567890D" : ^^^^ ^^^^ ^^^ : 抓出456here789、90Bhere123、C12wow345 : 該用甚麼方法? 不知道下面的程式符不符合你的要求? #!/usr/bin/perl my $all_line = "12345678901234567890HERE12345678901234567890"; my $pattern = qr/.{3}?(HERE|HOME|WOW)(.{3}?)/i; my ($end, $start); while ($all_line =~ m/$pattern/g) { $end = pos($all_line) - length($2) - 1; $start = $end - length($1) + 1; print "$& $start $end\n"; } # ------ 其輸出結果為 890HERE123 20 23 其中 20 和 23 代表 HERE 在字串 $all_line 中的起始和終止位置 (index 從 0 開始) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.230.108

04/07 10:29, , 1F
是的!可以使用,感謝您^^
04/07 10:29, 1F
文章代碼(AID): #19sYY5Ky (Perl)
文章代碼(AID): #19sYY5Ky (Perl)