2013-02-23 27 views
3

我想Wiki標記轉換爲HTML標記,即快速Perl的正則表達式不終止

[[Image:wiki.png]] 
[[Image:wiki.png|Wikipedia, The Free Encyclopedia.]] 

<img src="wiki.png" alt=""/> 
<img src="wiki.png" alt="Wikipedia, The Free Encyclopedia."/> 

一直拋出錯誤

替換替換沒有終止

它工作在this RegExr test和改變分隔符沒有固定的問題。任何有識之士將不勝感激。

+0

你能張貼您的整個Perl代碼是什麼? – 2013-02-23 02:46:27

+0

點是用正則表達式做完全,perl的僅僅是 '而(<>){S /正則表達式/替換;' '打印;}' – kqualters 2013-02-23 02:47:32

回答

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."/> 
+0

啊謝謝你,我不知道是什麼我剛在想。 – kqualters 2013-02-23 02:55:48

5

Perl正在告訴你替代替換沒有終止,而不是「替換/替換不是終止」。

替代運算符s由三部分組成:s/PATTERN/REPLACEMENT/FLAGS

您的代碼有s/PATTERN/g

也就是說,您有一個替換組成g但不終止/