REGEX:如何使此语句成为REGEX中的2匹配

时间:2016-03-19 09:13:09

标签: java regex

我声明:<%=anything%><%=anything%>

和正则表达式:<%=\\s*(\\S+)\\s*%>

正则表达式将stament与1匹配匹配,而不是2匹配。

有人可以修复我的正则表达式吗?

顺便说一句,我将Java用于我的应用程序

1 个答案:

答案 0 :(得分:2)

你目前正在将它们全部匹配到一个匹配中,因为正则表达式通常是贪婪的,因此它可以匹配匹配中的所有内容 - 因此=anything%><%=anything全部匹配\ S +。您可以将\ lazy修饰符用于\ S,因此它匹配的内容尽可能小,如下所示:<%=\\s*(\\S+?)\\s*%>。但是有更好的方法可以使用 - 因为您不想匹配结束>,只需将其包含在负字符类中:<%=\\s*([^\\s>]+)\\s*%>

以下是它的演示:https://regex101.com/r/bA4qY9/1 请注意,在regex101中测试后,您可能需要再次加倍反斜杠

如果您想进一步阅读,请查看http://www.regular-expressions.info/repeat.html