Java 如何使用正则表达式匹配多行代码

Java 如何使用正则表达式匹配多行代码,java,regex,Java,Regex,我已经看到许多答案指出use?s超前于reg表达式,但它将比我预期的更匹配。我正在Eclipse Neon中使用搜索 例: 正则表达式?s\w+\[\]\w+=new.+\{.*\};将第1行与第4行匹配,在最后一个}中停止匹配;,当我想让比赛在第一节停止时};因此,第1\2行和第3\4行可以单独匹配。简单地放一个?在。*之后修复了问题: (?s)(\w+)\[\] (\w+) = new [^{]+ (\{.*?\}); 这将尽可能少地匹配{}之间的字符。您的代码在哪里?它是带有标签Line

我已经看到许多答案指出use?s超前于reg表达式,但它将比我预期的更匹配。我正在Eclipse Neon中使用搜索

例:

正则表达式?s\w+\[\]\w+=new.+\{.*\};将第1行与第4行匹配,在最后一个}中停止匹配;,当我想让比赛在第一节停止时};因此,第1\2行和第3\4行可以单独匹配。

简单地放一个?在。*之后修复了问题:

(?s)(\w+)\[\] (\w+) = new [^{]+ (\{.*?\});

这将尽可能少地匹配{}之间的字符。

您的代码在哪里?它是带有标签Line1到Line4的代码。格式更新。我删除了IDE标签和提及。如果这是一个特定于IDE的问题,请解释它是如何产生的。我正在尝试在Eclipse中搜索。想知道Eclipse正则表达式引擎是否有一些特定的规则,所以我提到了它。如果Eclipse正则表达式引擎和其他引擎之间没有区别,那么它与IDE无关,标题是不正确的。如果假设贪婪,它将尽可能匹配最大的模式。您需要执行的是不情愿的模式。我将详细解释并建议进一步阅读。我复制了你的正则表达式,但没有区别,仍然匹配所有4行。@Lee真的吗?看看这里。它可以通过一些修改来使用javascript,但在Java中仍然可以使用。可能还有其他问题。@Lee实际上很抱歉,我的错,我复制了不正确的正则表达式:/I已经用新的正则表达式更新了问题。很有效,谢谢!所以关键是让我们不匹配“{”,然后。*?可以以非贪婪的方式匹配其余的,对吗?@Lee我不知道lol。试试看。
(?s)(\w+)\[\] (\w+) = new [^{]+ (\{.*?\});