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には次の3つの部分がありますs/PATTERN/REPLACEMENT/FLAGS

あなたのコードにはs/PATTERN/g

つまり、g終了はありませんが、で構成されるREPLACEMENTがあります/

于 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 に答える