我需要将字符串中的所有单引号更改为两个单引号,如果连续找到多个单引号,它们应保持不变。
e.g。 str = abc'def''sdf'''asdf 输出应该是:str = abc''def''sdf'''asdf
答案 0 :(得分:0)
我认为最干净的方法是搜索以下模式:
(?<!')'(?!')
然后用两个单引号替换它。该模式搜索单引号,但它具有负的lookbehind和lookahead断言,用于检查前一个和前一个字符是否也不是另一个单引号。
my $var = "abc'def''sdf'";
print "$var\n";
$var =~ s/(?<!')'(?!')/''/g;
print "$var\n";
请注意,您也可以编写一个匹配的直线模式,例如
(^|[^'])'($|[^'])
但是替换变得棘手,因为你会消耗单引号周围的字符。如果我不这样做,我不想做额外的工作。
<强>输出:强>
abc'def''sdf'
abc''def''sdf''
在这里演示: