楼主:
gugod (å•Š)
2020-11-13 18:23:14※ 引述《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;
我自已没仔细测过就是了。