gpt4 book ai didi

regex - 如何使用正则表达式限制在 perl 上找到的匹配项?

转载 作者:行者123 更新时间:2023-12-04 10:42:51 27 4
gpt4 key购买 nike

我在这件事上研究了很多之后,来请求你的帮助:

我试图限制 Perl 正则表达式对大文本所做的替换的重复。
我在谷歌搜索过,发现格式是 {2,3} (min, max) 但这似乎是我使用的语法的不同方式。

$replaced=~s/$var/$var2/g; # replaces all ocurrences
$replaced=~s/$var/$var2/; # replaces only first one

我的非最佳解决方案:
for($i=0; $i<8; $i++){

$replaced=~s/$var/$var2/;
}

我尝试过的:
$replaced=~s/$var/$var2/{8};
$replaced=~s/$var/$var2{8}/;

任何帮助将不胜感激!

编辑:
好的,所以几乎必须涉及一个循环,嗯.. 没有内置参数来限制它,这不是很奇怪吗??

最佳答案

答案与 \G可能是做你想做的最实用的方法,但只是为了好玩或教育或其他什么,这是另一种方法(需要 perl 5.10 或更高版本),使用代码断言和 backtracking control verbs (*COMMIT)(*FAIL) :

my $str = "Bananas in pajamas are coming down the stairs";
my $limit = 3;
my $count;

$str =~ s/(*COMMIT)(?(?{ $count++ >= 3 })(*FAIL))a/A/g;
say $str;

$str 中留下文本“穿着睡衣的 BAnAnAs 正在走下楼梯” — 只有前三个“a”受到影响,并且在第三个之后停止扫描字符串以获取更多匹配项。

关于regex - 如何使用正则表达式限制在 perl 上找到的匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8097887/

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