看板 Perl 關於我們 聯絡資訊
※ 引述《vernc (cralvin)》之銘言: : ○、○[FL-clover、door、(天満春華)]返せ、かわり、○○で。[2007年、2009年](東方) : ○、○[FL-clover,door,(天満春華)]返せ、かわり、○○で。[2007年、2009年](東方) : 如上例若限定只將第一個[]範圍的n個、取代成, n不固定 : ^([^\n[]*?\[[^]]*?)、([^]]*\]) : $1,$2 : 上面一次只能取代一個,請問要怎才能處理n個? : (?=\[*)(、)(?=[^]]*\]) : 這行也不對 : 那位大大能教一下嗎 : thx 我猜您在這裡使用的應該是 s/// 算符吧。像是 $s =~ s/、/,/; 不過這麼寫的話的的確只會處裡第一個。要處理全部的話,最後要加上 g: $s =~ s/、/,/g; 另我覺得全部寫成一條 regexp 會看起來很長很複雜,不如先找出第一個 '[' 與 第一個 ']' 的位置,然後對那一段字串範圍做前述的 s///. 類似這樣: my $pos1 = index($s, '['); my $pos2 = index($s, ']'); substr($s, $pos1, $pos2 - $pos1 + 1) =~ s/、/,/g; 我自已沒仔細測過就是了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 116.94.208.127 (日本) ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1605262999.A.EBB.html