Regex 将html添加到perl正则表达式

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

我正在尝试用HTML代码标记替换所有```

替换:

$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;