LoadImpact/Lua中的正则表达式
我试图从LoadImpact(Lua)的源代码中捕获以下关键字,并获得“nil值” 要捕获的关键字-LoadImpact/Lua中的正则表达式,lua,string-matching,lua-patterns,Lua,String Matching,Lua Patterns,我试图从LoadImpact(Lua)的源代码中捕获以下关键字,并获得“nil值” 要捕获的关键字-sf6HxIvNKKsv1jD4 从正文-/product/392/form_key/sf6HxIvNKKsv1jD4/”> 我试过了,但得到了“零值”效果- local key = string.match(body, 'form_key%/([^"]*)%/') 谢谢阿维纳什,波特 基本上,我试图在变量中的form_key(源代码)之后捕获动态键,然后用该变量替换脚本中的关键字。这将使我的
sf6HxIvNKKsv1jD4
从正文-/product/392/form_key/sf6HxIvNKKsv1jD4/”>
我试过了,但得到了“零值”效果-
local key = string.match(body, 'form_key%/([^"]*)%/')
谢谢阿维纳什,波特 基本上,我试图在变量中的
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%/([^%/])%/"))
但是,变量中存储了I nil值。您能建议吗?下面的正则表达式将匹配紧跟其后的字符串,直到下一个
/
符号
> print(string.match("/product/392/form_key/sf6HxIvNKKsv1jD4/')\">", ".*%/([^%/]*)%/"))
sf6HxIvNKKsv1jD4
或
> print(string.match("/product/392/form_key/sf6HxIvNKKsv1jD4/')\">", "form_key%/([^%/]*)%/"))
sf6HxIvNKKsv1jD4
说明:
- 在lua中没有前向或后向。它支持分组。
函数将返回捕获的组中的字符match
在输入字符串上,此模式匹配字符串form\u key%/
,后跟一个文本form\u key
。在lua中,/
与其他语言中的%
(转义字符)的操作相同\
捕获任何非([^%/]*)
零次或多次的字符/
文字符号%/
> print(string.match("/product/392/form_key/sf6HxIvNKKsv1jD4/')\">", ".*%/([^%/]*)%/"))
sf6HxIvNKKsv1jD4
match
功能打印捕获的字符由于您希望从字符串的(近)端部分捕获字母数字,因此可以使用
$
:
local s = [[/product/392/form_key/sf6HxIvNKKsv1jD4/')">]]
local key = s:match "(%w+)/'%)\">$"
您正在调用
print
函数。由于print不返回任何内容,因此无法获取存储在键中的变量
只需使用以下命令:
local key = body:match "form_key/([^/])/"
注意:Lua模式不是正则表达式。它们很相似,但为了保持实现的简单,模式要弱一些。