3

我正在尝试将 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 不断抛出错误

换人未终止

它在这个 RegExr 测试中有效,并且更改分隔符并没有解决问题。任何见解将不胜感激。

4

2 回答 2

5

Perl 告诉您替换替换没有终止,而不是“替换/替换没有终止”。

替换运算符s包含三个部分:s/PATTERN/REPLACEMENT/FLAGS.

你的代码有s/PATTERN/g.

也就是说,您有一个 REPLACEMENT 由g但没有 terminating组成/

于 2013-02-23T02:52:57.087 回答
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."/>
于 2013-02-23T02:54:34.440 回答