2014-09-23 36 views
1

文本在Lua中,我有以下的文字,並希望爲格式化:GSUB與代碼

傳入:

<UNIT STYLE="BOLD">Example</UNIT> 
<UNIT STYLE="HANDLE">Example 2</UNIT> 
<UNIT STYLE="THR">Example 3</UNIT> 

預期結果:

<BOLD>Example</BOLD> 
<UNIT STYLE="HANDLE">Example 2</UNIT> 
<UNIT STYLE="THR">Example 3</UNIT> 

的值可以是不同的(例如,這是一個文本...)。 如何做到這一點?我必須使用gsub的圖案嗎?

回答

1

是,gsub是要走的路:

s=[[ 
<UNIT STYLE="BOLD">Example</UNIT> 
<UNIT STYLE="HANDLE">Example 2</UNIT> 
<UNIT STYLE="THR">Example 3</UNIT> 
]] 

print(s:gsub('<UNIT STYLE="BOLD">(.-)</UNIT>','<BOLD>%1</BOLD>')) 

也嘗試這樣的:

print(s:gsub('<UNIT STYLE="(.-)">(.-)</UNIT>','<%1>%2<%1>')) 
+0

謝謝。 (.-)是什麼意思? – frgtv10 2014-09-23 13:22:11

+3

@ frgtv10,'(.-)'表示捕獲的非貪婪匹配。參見[參考手冊](http://www.lua.org/manual/5.2/manual.html#6.4.1)。 – lhf 2014-09-23 13:23:58