我正在尝试将 Wiki 标记转换为 HTML 标记,即
[[Image:wiki.png]]
[[Image:wiki.png|Wikipedia, The Free Encyclopedia.]]
到
<img src="wiki.png" alt=""/>
<img src="wiki.png" alt="Wikipedia, The Free Encyclopedia."/>
使用一行Perl
s/\[\[Image:(\w+?\.png)\|{0,1}(.*?)\]\]/g;
print;
但是 Perl 不断抛出错误
Substitution replacement not terminated
它适用于 this RegExr test并且更改分隔符并没有解决问题。任何见解将不胜感激。
最佳答案
您有一个没有替换字符串的正则表达式替换。它应该看起来像
s/PATTERN/REPLACEMENT/
而你只有
s/PATTERN/
所以 Perl 告诉你替换没有终止。
这个程序使用你的正则表达式来做你想做的事
use strict;
use warnings;
for (<DATA>) {
s/\[\[Image:(\w+?\.png)\|{0,1}(.*?)\]\]/<img src="$1" alt="$2"\/>/g;
print;
}
__DATA__
[[Image:wiki.png]]
[[Image:wiki.png|Wikipedia, The Free Encyclopedia.]]
输出
<img src="wiki.png" alt=""/>
<img src="wiki.png" alt="Wikipedia, The Free Encyclopedia."/>
关于regex - 快速正则表达式 Perl 未终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15036418/