我试图从字符串中的函数中获取参数。
参数可能包含:
示例
占位符:
{{request.expires_in}}
//can match regex: {{[a-zA-z0-9.-_]}}
功能
@func_compare('string1','string2',1234)
其他:
dERzUxOfnj49g/kCGLR3vhzBOTLwEMgrpa1/MCBpXQR2NIFV1yjraGVZLkujG63J0joj+TvNocjpJSQq2TpPRzLfCSZADcjmbkBkphIpsT8=
//Any string except brackets
案例
下面是我正在处理的示例案例。
内容:
@func_compare('string1',@func_test(2),1234),'Y-m-d H:i:s',@func_strtotime({{request.expires_in}} - 300)
Regex使用:
(?<=@func_compare().*[^(](?=))
我预计会得到
'string1',@func_test(2),1234
但现在与正则表达式匹配的是
'string1',@func_test(2),1234),'Y-m-d H:i:s',@func_strtotime({{request.expires_in}} - 300
任何人都知道如何将参数放在@func_startotime括号之间。如有任何回应,我将不胜感激。
请尝试一下:
(?<=@func_compare().*?(?:(.*?).*?)?(?=))
这两种情况都适用。
[正则表达式的解释]
.*?(?:(.*?).*?)?(?=))
.*? the shortest match not to overrun the next pattern
(?:(.*?).*?)? a group of substring which includes a pair of parens followed by another substring of length 0 or longer
(?=)) positive lookahead for the right paren
您将使用递归正则表达式得到结果:
(?<=@func_compare()([^()]*((?:.*?)|(?1))*)[^()]*(?=))
演示&解释