作者gugod (啊)
看板Perl
标题Re: [问题] regexp的replace?
时间Fri Nov 13 18:23:14 2020
※ 引述《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://webptt.com/cn.aspx?n=bbs/Perl/M.1605262999.A.EBB.html