Regexp:多行匹配(和)之间的任何内容;
以下是我当前的设置: 我的regexp匹配是Regexp:多行匹配(和)之间的任何内容;,regex,Regex,以下是我当前的设置: 我的regexp匹配是skcript\.register(effect | expression | event | condition)\((.*)\) 基本上,我希望匹配源代码文件中以skcript.registerwhatever开头的所有方法。(以结尾),但问题是代码可能会变成多行。如果我将(.*)更改为([\s\s]*),它会完全破坏并匹配所有内容,直到最后一个)您需要一个惰性的quanitfier:*? \(([\s\S]*?)\) 如果字符串包含嵌套括号:
skcript\.register(effect | expression | event | condition)\((.*)\)代码>
基本上,我希望匹配源代码文件中以skcript.registerwhatever开头的所有方法。(
以结尾)代码>,但问题是代码可能会变成多行。如果我将(.*)
更改为([\s\s]*)
,它会完全破坏并匹配所有内容,直到最后一个)
您需要一个惰性的quanitfier:*?
\(([\s\S]*?)\)
如果字符串包含嵌套括号:
(?'parens'\((?:[^\(]|\g'parens')*?\))
您需要在正则表达式中转义括号,因为它们是保留符号。试试\(.*)
你需要的是一个lexer和解析器,而不是regex。@leppie我在用PHP。请用一个实时演示更新你的问题。他确实逃脱了\(.*)
你说得对。我的错,太棒了,谢谢!你的答案将在7分钟内被接受。不,这是不对的。若有嵌套的括号,它和右边的部分不匹配。什么时候在方法定义中会有嵌套的括号?检查OP提供的输入字符串。好的,答案是编辑的