Re: [問題] regexp的replace?
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章