gpt4 book ai didi

perl - 如何用它们的前辈替换所有出现的某些字符?

转载 作者:行者123 更新时间:2023-12-03 15:10:03 24 4
gpt4 key购买 nike

$s = "bla..bla";
$s =~ s/([^%])\./$1/g;

我认为它应该替换所有出现的 .这不是在 % 之后与之前的字符 . .

但是 $s然后是: bla.bla , 但
应该是 blabla .问题出在哪儿?我知道我可以使用量词,但我需要这样做。

最佳答案

当全局正则表达式搜索字符串时,它不会找到重叠的匹配项。

字符串中的第一个匹配项将是 a. , 替换为 a .当正则表达式引擎恢复搜索时,它从下一个 . 开始。所以它看到 .bla作为字符串的其余部分,并且您的正则表达式需要在 . 之前匹配一个字符所以它不能再次匹配。

相反,使用否定后视来执行前一个字符不是 % 的断言。 :

$s =~ s/(?<!%)\.//g;

请注意,如果您使用像 (?<=[^%]) 这样的正面回顾,您将不会替换 .如果它是字符串中的第一个字符。

关于perl - 如何用它们的前辈替换所有出现的某些字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14985919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com