gpt4 book ai didi

regex - 如何在给定的 $start-$end 范围内执行搜索和替换?

转载 作者:行者123 更新时间:2023-12-01 16:19:32 25 4
gpt4 key购买 nike

例如,一个文本文件有许多 $start-$end 对,并且在每一对中都有一些文本。我希望 Perl 用 $start-$end 对查找并替换所有 $pattern;如果 $pattern 不在对中,则不要替换它。例如文本:

xx START xx bingo xx bingo xx END xx bingo xx START xx bingo xx END bingo

文本中的任何地方都可能有换行符(此处未显示); $pattern 可能在一对中出现多次。预期结果是:

xx START xx okyes xx okyes xx END xx bingo xx START xx okyes xx END bingo

这项工作看起来很简单,但我只是想不出一个 Perl 正则表达式来完成它。有人能帮忙吗?

最佳答案

查看您的“来源”,我建议这里的技巧是设置 $/ - 记录分隔符。

如果设置为单个空格,则可以逐字迭代。然后使用 range operator以确定您是否在定界符内。

例子:

#!/usr/bin/env perl

use strict;
use warnings;

local $/ = ' ';

while ( <DATA> ) {
if ( m/START/ .. /END/ ) {
s/bingo/okyes/g;
}
print;
}

__DATA__
xx START xx bingo xx bingo xx END xx bingo xx START xx bingo xx END bingo

这打印:

xx START xx okyes xx okyes xx END xx bingo xx START xx okyes xx END bingo

您可能可以使用一个正则表达式来完成此操作。我建议您不要,因为它会很复杂并且以后很难理解。

关于regex - 如何在给定的 $start-$end 范围内执行搜索和替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35503417/

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