Regexp:多行匹配(和)之间的任何内容;

Regexp:多行匹配(和)之间的任何内容;,regex,Regex,以下是我当前的设置: 我的regexp匹配是skcript\.register(effect | expression | event | condition)\((.*)\) 基本上,我希望匹配源代码文件中以skcript.registerwhatever开头的所有方法。(以结尾),但问题是代码可能会变成多行。如果我将(.*)更改为([\s\s]*),它会完全破坏并匹配所有内容,直到最后一个)您需要一个惰性的quanitfier:*? \(([\s\S]*?)\) 如果字符串包含嵌套括号:

以下是我当前的设置:

我的regexp匹配是
skcript\.register(effect | expression | event | condition)\((.*)\)


基本上,我希望匹配源代码文件中以
skcript.registerwhatever开头的所有方法。(
结尾),但问题是代码可能会变成多行。如果我将
(.*)
更改为
([\s\s]*)
,它会完全破坏并匹配所有内容,直到最后一个
您需要一个
惰性的
quanitfier:
*?

\(([\s\S]*?)\)
如果字符串包含嵌套括号:

(?'parens'\((?:[^\(]|\g'parens')*?\))

您需要在正则表达式中转义括号,因为它们是保留符号。试试
\(.*)

你需要的是一个lexer和解析器,而不是regex。@leppie我在用PHP。请用一个实时演示更新你的问题。他确实逃脱了
\(.*)
你说得对。我的错,太棒了,谢谢!你的答案将在7分钟内被接受。不,这是不对的。若有嵌套的括号,它和右边的部分不匹配。什么时候在方法定义中会有嵌套的括号?检查OP提供的输入字符串。好的,答案是编辑的