0

次の文字列の "," を @ に置き換えたいのですが、単位 (10,000) 形式は変更しません。

  1. x,y,zx@y@z
  2. x1,y1,z1x1@y1@z1
  3. x1,y1 10,000,z1x1@y1 10,000@z1

を使っs/(\D),/\1@/gたのですが、2と3ではうまくいきません。 除外パターンが両側に数字であると認識する方法は?誰か助けてくれませんか?本当にありがとう

4

2 に答える 2

0

次の代替手段を試してください。

s/,(?<!\d)(?!\d)/\@/g;

サンプル スクリプト

use strict;
use warnings; 

my @array = ( 'x,y,z', 'x1,y1,z1', 'x1,y1 10,000,z1');

for my $string (@array) {
    $string =~ s/,(?<!\d)(?!\d)/\@/g;
    print "$string\n";
}
#OUTPUT
#x@y@z
#x1@y1@z1
#x1@y1 10,000@z1
于 2013-10-21T16:53:02.883 に答える