Regex 将html添加到perl正则表达式
我正在尝试用HTML代码标记替换所有``` 替换:Regex 将html添加到perl正则表达式,regex,perl,Regex,Perl,我正在尝试用HTML代码标记替换所有``` 替换: $string = "Foo `FooBar` Bar"; 与: 我试过这些 $pattern = '`(.*?)`'; my $replace = "<code/>$&</code>"; $subject =~ s/$pattern/$replace/im; #And $subject =~ s/$pattern/<code/>$&</code>/im; $patter
$string = "Foo `FooBar` Bar";
与:
我试过这些
$pattern = '`(.*?)`';
my $replace = "<code/>$&</code>";
$subject =~ s/$pattern/$replace/im;
#And
$subject =~ s/$pattern/<code/>$&</code>/im;
$pattern='`(.**');
my$replace=“
$&
”;
$subject=~s/$pattern/$replace/im;
#及
$subject=~s/$pattern/
$&/im;
但是它们都不起作用。假设你的意思是
$string
,而不是$subject
use strict;
use warnings;
use v5.10;
my $string = "Foo `FooBar` Bar";
my $pattern = '`(.*?)`';
my $replace = "<code/>$&</code>";
$string =~ s{$pattern}{$replace}im;
say $string;
假设您的意思是
$string
,而不是$subject
use strict;
use warnings;
use v5.10;
my $string = "Foo `FooBar` Bar";
my $pattern = '`(.*?)`';
my $replace = "<code/>$&</code>";
$string =~ s{$pattern}{$replace}im;
say $string;
注意斜杠。您的字符串在
$string
中,但您正在$subject
上执行s//
。你能出示你的实际代码吗?你能告诉我什么不起作用吗?降价了吗?如果是这样,请看一看。注意斜杠。您的字符串在$string
中,但您正在$subject
上执行s//
。你能出示你的实际代码吗?你能告诉我什么不起作用吗?降价了吗?如果是的话,请看一下。是否有其他方法可以使用$1
,而不直接将其替换。比如制作类似于$replace='$i
'
@ChrysUgwu的东西是的,但我不推荐它,因为它是一个安全漏洞。如果您使用s{}{}e
的话,右手边的值将被视为代码。但现在你很容易受到代码注入的影响。它像插值一样工作<代码>我的$foo=23;我的$bar=q[这个$foo];打印“$bar”时会显示此$foo
。但是如果你print eval qq[“$bar”]
你会得到这23个
。。。但是,$bar
可以包含任何代码。那么Perl不提供像php这样的安全模式替换吗@ChrysUgwu搜索和替换是安全的,除非您使其不安全。但它不支持像示例1中的PHP那样在字符串中扩展$1
。也许有人会去做,但我不知道。我建议把这个问题作为一个新问题来问。有没有其他方法可以使用$1
而不直接替换它。比如制作类似于$replace='$i
'
@ChrysUgwu的东西是的,但我不推荐它,因为它是一个安全漏洞。如果您使用s{}{}e
的话,右手边的值将被视为代码。但现在你很容易受到代码注入的影响。它像插值一样工作<代码>我的$foo=23;我的$bar=q[这个$foo];打印“$bar”时会显示此$foo
。但是如果你print eval qq[“$bar”]
你会得到这23个
。。。但是,$bar
可以包含任何代码。那么Perl不提供像php这样的安全模式替换吗@ChrysUgwu搜索和替换是安全的,除非您使其不安全。但它不支持像示例1中的PHP那样在字符串中扩展$1
。也许有人会去做,但我不知道。我建议把这个问题作为一个新问题来问。
$ perl ~/tmp/test.plx
Use of uninitialized value $& in concatenation (.) or string at /Users/schwern/tmp/test.plx line 9.
Foo <code/></code> Bar
use strict;
use warnings;
use v5.10;
my $string = "Foo `FooBar` Bar";
my $pattern = qr{`(.*?)`};
$string =~ s{$pattern}{<code/>$1</code>}im;
say $string;