jumpchess 发表于 2014-7-11 10:50:23

lua 正则表达式, 求解

print(string.gsub("x_y_z_11.png", "(%w+)%.(%w+)", "%2"))
x_y_z_png1



如果改成 %1就是
x_y_z_111


为什么, 谢谢.

龙套哥 发表于 2014-7-11 12:01:40

结果错了
应该是x_y_z_png <制表符>1
和 x_y_z_11<制表符> 1
第一个查找到的地方是11.png %2 替换的后一部分 png到z_后边的地方
第二个查找到地方还是以上,1%替换前半串11到z_后方。
最后的1表示替换操作了一次

jumpchess 发表于 2014-7-11 16:51:10

龙套哥 发表于 2014-7-11 12:01
结果错了
应该是x_y_z_png   1
和 x_y_z_11 1


谢谢, 再问一下, 既然查找到的地方是11.png
为什么 %2不是返回png呢.
或者说, 返回的string会加上未匹配的部分一起返回?

龙套哥 发表于 2014-7-11 17:10:19

jumpchess 发表于 2014-7-11 16:51
谢谢, 再问一下, 既然查找到的地方是11.png
为什么 %2不是返回png呢.
或者说, 返回的string会加上未匹 ...

我也不太懂lua 感觉应该结果是替换过的串。你查查表看下函数的那个返回值定义。

anyoer* 发表于 2014-7-11 17:12:05

{:5_255:}    你们这是在说什么。。

gengxxx 发表于 2014-7-11 23:52:48

暗语啊, 间谍来的,在这里接头

蔡骏 发表于 2014-7-12 18:50:13

(%w+)%.(%w+) 匹配"11.png"
%2表示第2个捕获项,即第二个括号(%w+)捕获的字符,即"png"

合起来意思就是把“a_b_c_11.png”中的"11.png"替换为"png",即得到"a_b_c_png"

改成%1后,就是拿第1个捕获项去替换,即第一个括号(%w+)捕获的字符,即"11"
那么“a_b_c_11.png”中的"11.png"被“11”替换后即得到“a_b_c_11”
页: [1]
查看完整版本: lua 正则表达式, 求解