gpt4 book ai didi

regex - Perl 在多行上拆分长替换正则表达式

转载 作者:行者123 更新时间:2023-12-01 13:30:37 25 4
gpt4 key购买 nike

我在 Perl 正则表达式中有一个很长的替换字符串,我想将其分成多行。将长替换字符串拆分为多行的语法是什么?我尝试了以下操作,但没有成功(空格未被忽略):

$var =~ s/(some)(thing)/A_very_long_string_with_many_characters_that_should_be_split_over_
multiple_lines_but_can't_be_for_whatever_reason._The_matching_groups_are_"$1"_and_"$2"/x;

我的正则表达式替换字符串比这个人为的例子交错得多,所以我不能只把大的文字部分放到一个变量中。换句话说,以下内容对我的情况没有有帮助:

my $prefix = 'A_very_long_string_with_many_characters_that_should_be_split_over_' .
'multiple_lines_but_can\'t_be_for_whatever_reason._The_matching_groups_are_';
$var =~ s/(some)(thing)/$prefix"$1"_and_"$2"/;

有谁知道将替换字符串拆分成多行的方法吗?

最佳答案

替换端是一个字符串,受一些特定修饰符的约束。一个不同的情况是 /e,当替换端被评估为代码时。但是,如果它是一个普通字符串,那么它的计算方式不受(任何?)修饰符的影响,而且肯定不会受到 /x 的影响,因为空格在字符串中计数。

如果您使用/e,那么您可以根据需要在替换端编写代码,然后您可以逐段构建您的替换字符串。

一种方法是使用 sub 在 /e 下整齐地组织替换字符串的构建

$var =~ s/(some)(thing)/build_repl($1, $2)/e;

sub build_repl {
my ($c1, $c2) = @_;
return
qq(A_very_long...) .
qq(The_matching...$c1...$c2);
}

关于regex - Perl 在多行上拆分长替换正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59461785/

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