【问题标题】:Whole regexp string as variable整个正则表达式字符串作为变量
【发布时间】:2014-08-27 19:04:44
【问题描述】:
my $re = 's/foo/bar/g';
my $x = 'one two foo';

$x =~ $re;

如何做到这一点?

my $re1 = 'foo';
my $re2 = 'bar';

my $x = 'one two foo';

$x =~ s/$re1/$re2/g;

...不是我的解决方案!非常感谢。

【问题讨论】:

    标签: regex string perl replace


    【解决方案1】:

    您可以在匿名函数中使用替换,

    my $re = sub { s/foo/bar/g for @_ };
    
    my $x = 'one two foo';
    $re->($x);
    

    【讨论】:

    • 巧妙避免eval
    • @Zaid 是的,但是如果他从外部源读取正则表达式,则 eval 可能是 OP 想要的。
    • 在您的示例中,s/foo/bar/g 是常量,但我需要它作为变量,因为它应该是动态生成的。
    • @Toru 替代品是 my $re = eval "sub { $regex for \@_ }";
    • @Сухой27 很好,谢谢。如何使用数组正则表达式 (@regexes) 而不是标量正则表达式 ($regex) 来遍历所有正则表达式?
    猜你喜欢
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 2020-09-19
    • 2017-09-26
    相关资源
    最近更新 更多