我想在LoadImpact(Lua)的源代码中捕获以下关键字并获取'nil value'。
捕获关键字 - sf6HxIvNKKsv1jD4
来自身体 - /product/392/form_key/sf6HxIvNKKsv1jD4/')">
我尝试了这个,但获得了“零值” -
local key = string.match(body, 'form_key%/([^"]*)%/')
感谢Avinash,hjpotter。
基本上我试图在变量中form_key
(来自源代码)之后捕获动态密钥,然后用该变量替换脚本中的关键字。这将使我的脚本动态化,以适应在appln中发生的动态关键字的变化。
为此,我使用以下代码 -
local pages = http.request_batch({ {"GET", "http://example.com/";, response_body_bytes=4096} })
local body = pages[1]['body']
local key = print(string.match(body, "form_key%/([^%/])%/"))
但是我的值是存储在变量中的。你能建议吗?
答案 0 :(得分:1)
由于您想要从字符串的(近端)部分捕获字母数字,您可以使用$
:
local s = [[/product/392/form_key/sf6HxIvNKKsv1jD4/')">]]
local key = s:match "(%w+)/'%)\">$"
您正在调用print
函数。由于print不返回任何内容,因此您不会将变量存储在key
。
只需使用以下内容:
local key = body:match "form_key/([^/])/"
答案 1 :(得分:0)
以下正则表达式会匹配字符串form_key/
之后的字符串,直到下一个/
符号。
> print(string.match("/product/392/form_key/sf6HxIvNKKsv1jD4/')\">", ".*%/([^%/]*)%/"))
sf6HxIvNKKsv1jD4
或强>
> print(string.match("/product/392/form_key/sf6HxIvNKKsv1jD4/')\">", "form_key%/([^%/]*)%/"))
sf6HxIvNKKsv1jD4
<强>解释强>
在lua中没有向前看或向后看。它支持分组。 match
函数将返回捕获组中的字符。
form_key%/
在输入字符串上,此模式匹配字符串form_key
,后跟文字/
。在lua中%
与\
(转义字符)在其他语言中的作用相同。
([^%/]*)
捕获任何不属于/
零次或多次的字符。
%/
文字/
符号。
最后,通过match
函数打印捕获的字符。