2014-09-23 92 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