gpt4 book ai didi

regex - 正则表达式中的 Perl 正则表达式

转载 作者:行者123 更新时间:2023-12-05 00:17:27 24 4
gpt4 key购买 nike

我想问一下是否可以在带有“e”修饰符的替换匹配表达式的 RHS 中放置另一个正则表达式。

例如,我想用 替换 $foo 中存储的任何单词。相同数量的“-” , 不区分大小写。

例如:

$str =~ s/($foo)/$temp = $1; $temp ~= s/./-//gie;

但是编译的时候经常会出现语法错误,而
$str =~ s/($foo)/$temp = $1; $temp = "---"/gie; 

确实有效。

我想我没有正确逃脱斜线,有什么想法吗?

最佳答案

您当然需要 e可以使用的修饰符

$str = 'banana';
$foo = 'na';
$str =~ s/$foo/$&=~s#.#-#gr/ge;
print $str;

online Perl demo

请注意,外部正则表达式使用 /正则表达式分隔符,而内部的分隔符包含不同的分隔符(您可以在此处使用您最喜欢的两个)。
e修饰符是外层模式必须的,你还需要通过 r修改器到内部,以避免修改只读值问题。

另请注意,在 Perl v.5.20 之前,最好避免使用 $&并用 (...) 将整个图案括起来捕获组:
$str =~ s/($foo)/$1=~s#.#-#gr/ge;
^ ^ ^^

关于regex - 正则表达式中的 Perl 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40248541/

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