如何使用正则表达式获取字符串中的方法/函数



我试图从字符串中的函数中获取参数。

参数可能包含:

示例

占位符:

{{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))*)[^()]*(?=))

演示&解释

相关内容

  • 没有找到相关文章

最新更新