Re: [問題] 在array裡取值

看板Perl作者 (jacobcan118)時間11年前 (2013/12/11 13:19), 編輯推噓2(206)
留言8則, 4人參與, 最新討論串3/3 (看更多)
謝謝 不過請問一下,為什麼我用while 會print 不出東西 用 if 卻可以 match m/裡面的 g 是代表什麼? for( @array_source) { if (m/*?\/var-(.*)\/.*\/(var.*)/) { print "$_\n"; print "$1\n"; } print "aaaaaa\n"; while( m!/.*?/(.*?)/.*?/(.*?),!g ) { print "$1\n$2\n"; } output ---------------------------- /a/var-a00/b/var-b00 var-b00 /a/var-a00/b/var-b01 var-b01 /a/var-a01/b/var-b00 var-b00 /a/var-a01/b/var-b01 var-b01 /a/var-a02/b/var-b00 var-b00 /a/var.... .... aaaaaa ※ 引述《CindyLinz (Cindy Wang)》之銘言: : ※ 引述《jacobcan118 (jacobcan118)》之銘言: : : 請問各位我有一個array叫array_source 如下, 我有其他其他的辦法可以取得 array_source裡各個element裡各個string裡倒斜線裡第二和第四得值. : : 我是用兩次split 在用chomp但有其他方法可以更簡單嗎. 謝謝 : : print Dumper(@array_source)."\n"; : : for (my $i; i < 10; i++) : : { : : @array_a = split (/,/, $array_source[$i]); : : for (my $j = 0; $j < $#array_a; $j++) : : { : : @array_b = split (/\//, $array_a[$j]); : : chomp($var_a = @array_b[2]); : : print "$var_a\n"; : : chomp($var_b= @array_b[4]); : : print "$var_b\n"; : : } : : ---------------------- : : print out : : $VAR1 = '/a/var-a00/b/var-b00,/a/var-a00/b/var-b01,/a/var-a01/b/var-b00,/a/var-a01/b/var-b01,/a/var-a02/b/var-b00,/a/var-a02/b/var-b01,/a/var-a03/b/var-b00,/a/var-a03/b/var-b01,'; : : $VAR2 = '/a2/var-a10/b2/var-b10,/a2/var-a10/b2/var-b01,/a2/var-a11/b2/var-b10,/a2/var-a11/b2/var-b11,/a2/var-a12/b2/var-b10,/a2/var-a12/b2/var-b11,/a2/var-a13/b2/var-b10,/a2/var-a13/b2/var-b11,'; .... : : var-a00 : : var-b00 : : var-a00 : : var-b01 : : .... : : ... : : var-a13 : : var-b10 : : var-a13 : : var-b11 : 可以這樣用, 然後那個是正斜線不是倒斜線 :p : for(@array_source) { : while( m!/.*?/(.*?)/.*?/(.*?),!g ) { : print "$1\n$2\n"; : } : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 71.183.242.84

12/11 14:17, , 1F
Cindy 的 RE 是給你用在一整行上的. 已經用 split 以逗點切開
12/11 14:17, 1F

12/11 14:17, , 2F
的話要把 regular expression 最後的逗點拿掉
12/11 14:17, 2F

12/11 14:18, , 3F
BTW, 你 if 用的 regular expression 改變意義了
12/11 14:18, 3F

12/11 17:31, , 4F
g是..有兩種用法, 建議查 perlre 裡面的說明比較好 ^^|
12/11 17:31, 4F

12/11 17:32, , 5F
嗯, 我給的程式是對你的原 po 中 $VAR1 $VAR2 那樣的輸
12/11 17:32, 5F

12/11 17:32, , 6F
入操作的
12/11 17:32, 6F

12/11 20:04, , 7F
perldoc retut 不錯,可以先看
12/11 20:04, 7F

12/15 14:54, , 8F
感謝..
12/15 14:54, 8F
文章代碼(AID): #1If_N981 (Perl)
文章代碼(AID): #1If_N981 (Perl)