Regex 高级Lua模式匹配
我想知道这两种情况中的任何一种/两种在Lua中是否可行: 我有一个类似这样的字符串:Regex 高级Lua模式匹配,regex,lua,pattern-matching,Regex,Lua,Pattern Matching,我想知道这两种情况中的任何一种/两种在Lua中是否可行: 我有一个类似这样的字符串:some\u value=averylongintegervalue 假设我知道字符串中的=符号后面正好有21个字符,有没有一种简单的方法可以用我自己的替换字符串averylongintegervalue?(也就是说,一种比键入更简单的方法:string.gsub(“some\u value=averylongintegervalue”,“some\u value=……”,“some\u value=anewin
some\u value=averylongintegervalue
假设我知道字符串中的=
符号后面正好有21个字符,有没有一种简单的方法可以用我自己的替换字符串averylongintegervalue
?(也就是说,一种比键入更简单的方法:string.gsub(“some\u value=averylongintegervalue”,“some\u value=……”,“some\u value=anewintegervalue”)
假设我们将原始字符串编辑成这样:some\u value=averylongintegervalue&
假设我们不知道=
符号后面有多少个字符,有没有办法替换某些值=
和&
之间的字符串
我知道这是一个奇怪的特定问题,但我经常发现自己需要使用regex执行类似的任务,并且想知道如何在Lua中使用模式匹配来完成这些任务。是的,您可以使用以下内容(
%1
指模式中的第一个捕获,在本例中,它捕获某些值=
):
这应该分配一些值=替换的
您知道是否也可以将=和&之间的每个字符替换为重复的单个字符(例如*符号重复21次,而不是替换为常量字符串)
是的,但您需要使用一个函数:
local str = ("some_value=averylongintegervalue")
:gsub("(some_value=)([^&]+)", function(a,b) return a..("#"):rep(#b) end)
这将分配some#u值=#.我认为可以,但这里似乎应该有一个替换,因此可以将限制参数1
传递给gsub
。哦,太好了,谢谢!您知道是否也可以用一个重复的字符替换=
和&
之间的每个字符(例如*符号重复了21次,而不是像这样的常量字符串被替换了
)?
local str = ("some_value=averylongintegervalue")
:gsub("(some_value=)([^&]+)", function(a,b) return a..("#"):rep(#b) end)