Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在perl中将多个正则表达式替换为一个正则表达式_Regex_Perl_Replace - Fatal编程技术网

Regex 在perl中将多个正则表达式替换为一个正则表达式

Regex 在perl中将多个正则表达式替换为一个正则表达式,regex,perl,replace,Regex,Perl,Replace,我可以在perl中将下面的正则表达式替换为一个正则表达式吗 message =~ s/&lt;span&gt;(.*?)&lt;\/span&gt;/<span>$1<\/span>/g; message =~ s/&lt;em&gt;(.*?)&lt;\/em&gt;/<em>$1<\/em>/g; message =~ s/&lt;ul&gt;(.*?)&l

我可以在perl中将下面的正则表达式替换为一个正则表达式吗

message =~ s/&lt;span&gt;(.*?)&lt;\/span&gt;/<span>$1<\/span>/g;
message =~ s/&lt;em&gt;(.*?)&lt;\/em&gt;/<em>$1<\/em>/g;
message =~ s/&lt;ul&gt;(.*?)&lt;\/ul&gt;/<ul>$1<\/ul>/g;
message =~ s/&lt;ol&gt;(.*?)&lt;\/ol&gt;/<ol>$1<\/ol>/g;
message=~s/span(.*?)\/span/$1/g;
message=~s/em(.*)\/em/$1/g;
信息=~s/ul(.*?\/ul/
    $1/g; message=~s/ol(.*?)\/ol/$1/g;
您可以这样做:

message =~ s#
       &lt;
       (?<tag>span|em|ul|ol)   
       &gt;
       (.*?)
       &lt;
       /
       \k<tag>   
       &gt;
     #
       <$+{tag}>  
       $2    
       </$+{tag}>
     #xg;
message=~s#
(?跨度| em | ul | ol)
(.*?)
/
\k
#
$2    
#xg;

您可以这样做:

message =~ s#
       &lt;
       (?<tag>span|em|ul|ol)   
       &gt;
       (.*?)
       &lt;
       /
       \k<tag>   
       &gt;
     #
       <$+{tag}>  
       $2    
       </$+{tag}>
     #xg;
message=~s#
(?跨度| em | ul | ol)
(.*?)
/
\k
#
$2    
#xg;

我不确定您是否需要捕获标签之间的内容。为什么不在标记名周围替换

message =~ s#&lt;(/?(?:span|em|[uo]l))&gt;#<$1>#g;
message=~s#(/?(?:span | em |[uo]l))#g;

我不确定您是否需要捕获标签之间的内容。为什么不在标记名周围替换

message =~ s#&lt;(/?(?:span|em|[uo]l))&gt;#<$1>#g;
message=~s#(/?(?:span | em |[uo]l))#g;

这是一个非常优雅的答案,但严格来说,它并不等同于此。比较
encode_实体“foo”的结果。因为这个答案不会重复出现,所以输出将是
emfoo/em`.@amon。是的,这是个问题。嵌套标记在将HTML与Regex组合时总是会出现问题。是的,这是一个问题…任何嵌套标记的解决方案…我需要它来进行文本转换…@manu。使用适当的html解析器。正则表达式不是解析HTML的正确工具。这是一个非常优雅的答案,但严格来说它不是等价的。比较
encode_实体“foo”的结果。因为这个答案不会重复出现,所以输出将是
emfoo/em`.@amon。是的,这是个问题。嵌套标记在将HTML与Regex组合时总是会出现问题。是的,这是一个问题…任何嵌套标记的解决方案…我需要它来进行文本转换…@manu。使用适当的html解析器。正则表达式不是解析HTML的正确工具。