Regex 使用正则表达式匹配函数参数

Regex 使用正则表达式匹配函数参数,regex,Regex,我有一些模糊代码调用函数,如下所示: getAny([["text with symbols \"()[],.;\" and maybe 'ImVerySeriousFn'"], ...]); setAny([["other text with \"()[],.;\""], ...]);... 参数包含随机文本。函数之间相互跟随,没有新行 如何使用正则表达式集获取getAny、setAny和其他函数的参数 我需要这个结果: regex1 result: [["text with symbols

我有一些模糊代码调用函数,如下所示:

getAny([["text with symbols \"()[],.;\" and maybe 'ImVerySeriousFn'"], ...]);
setAny([["other text with \"()[],.;\""], ...]);...
参数包含随机文本。函数之间相互跟随,没有新行

如何使用正则表达式集获取
getAny
setAny
和其他函数的参数

我需要这个结果:

regex1 result: [["text with symbols \"()[],.;\" and maybe 'ImVerySeriousFn'"], ...]
regex2 result: [["other text with \"()[],.;\""], ...]
...
我试着写
regex1

getAny\((.*)\)
但匹配结果也包含
setAny
调用

 [["text with symbols \"()[],.;\" and maybe 'ImVerySeriousFn'"], ...]);setAny([["other text with \"()[],.;\""], ...]
当我尝试时:

getAny\((.*?)\)
匹配结果中断参数字符串

[["text with symbols \"(
我不能按
拆分


使用正则表达式可能无法做到这一点?

您的正则表达式需要是
\(.*)因为您的代码是模糊的(并且假定在一行上)

请注意,如果其中一个参数包含
),则此操作将失败在它里面

解释(来自Regex101.com):

正则表达式的主要问题是从未指定
来结束一场比赛,所以它继续前进,直到看到最后一个
,因为你使用了
*
,这是贪婪的(抓住一切),除非后面跟着


我不知道,如果我理解你的问题,但如果我理解,你也许可以用一个小组收集其中允许的符号

您的正则表达式可以是:
\(()“[],\;a-zA-Z\)


外部括号括起组

如果我正确理解了您的模式,您的函数参数将始终以
[[“
开头,以
“]
结尾

正则表达式:

/getAny\((\[\[".*?[^\\]"\]\])\);/
演示:


请注意懒惰的
*?
[^\\]
,以确保匹配的引号不被转义。

解析器可能是更好的方法,但是呢?:
[gs]etAny\(.*)
不幸的是,函数之间没有新行。
[gs]etAny\(.*)\)
-。您假设逗号将始终存在。我认为OP添加了标点符号以表示可能存在“特殊”介于和之间的字符,这不应导致正则表达式失败,也不应作为参数分隔符。@AmalMurali已修复。另外,如果你看他的输入,逗号也被用作参数分隔符。换言之:我认为
(?:.+,)*?
在这里是没有用的,因为
+
最后是所有匹配的原因。谢谢你的回答——尽管下面有注释,它没有提供足够的解释,说明它是做什么的,以及它解决OP问题的原因。请你解释清楚好吗?@EngineerDollery很抱歉在你的收件箱中乱发评论,但在阅读了这两个链接后,我不认为这不符合指导原则。根据“如何回答”,我想我可以通过为链接添加一些上下文来解决这个问题,比如“这里是Regex101.com上正在运行的regex的演示”,但我不知道这是否能满足我显然错过的要求。
/getAny\((\[\[".*?[^\\]"\]\])\);/