1

我可以将以下正则表达式替换为 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;
4

2 回答 2

3

你可以这样做:

message =~ s#
       &lt;
       (?<tag>span|em|ul|ol)   
       &gt;
       (.*?)
       &lt;
       /
       \k<tag>   
       &gt;
     #
       <$+{tag}>  
       $2    
       </$+{tag}>
     #xg;
于 2013-07-26T10:07:34.787 回答
1

我不确定您是否需要捕获标签之间的内容。为什么不直接替换&lt;标签&gt;名称呢?

message =~ s#&lt;(/?(?:span|em|[uo]l))&gt;#<$1>#g;
于 2013-07-26T12:23:05.203 回答