我声明:<%=anything%><%=anything%>
和正则表达式:<%=\\s*(\\S+)\\s*%>
。
正则表达式将stament与1匹配匹配,而不是2匹配。
有人可以修复我的正则表达式吗?
顺便说一句,我将Java用于我的应用程序
答案 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