我正在尝试将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不断抛出错误
替换替换未终止
它适用于this RegExr test并且更改分隔符并未解决问题。任何见解都会非常感激。
答案 0 :(得分:5)
Perl告诉你替换替换没有终止,而不是“替换/替换没有终止”。
替换运算符s
包含三个部分:s/PATTERN/REPLACEMENT/FLAGS
。
您的代码有s/PATTERN/g
。
也就是说,您有一个由g
组成但没有终止/
的替换。
答案 1 :(得分:5)
你有一个没有替换字符串的正则表达式替换。它应该看起来像
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."/>