我想捕获<%和%>之间的所有文本和文本块.
例如:
<html>
<head>
<title>Title Here</title>
</head>
<body>
<% include("/path/to/include") %>
<h1>Test Template</h1>
<p>Variable: <% print(second_var) %></p>
<%
variable = value;
foreach(params here)
{
code here
}
%>
<p><a href="/" title="Home">Home</a></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了,\<\%(.*)\%\>但这将捕获包括<h1>Test Template</h1>块在内的所有内容.
Tim*_*ker 42
你使用哪个正则表达式引擎?
<%(.*?)%>
Run Code Online (Sandbox Code Playgroud)
应该使用"点匹配换行符"选项.如果您不知道如何设置,请尝试
<%([\s\S]*?)%>
Run Code Online (Sandbox Code Playgroud)
要么
(?s)<%(.*?)%>
Run Code Online (Sandbox Code Playgroud)
无需逃避<,%或>顺便说一下.
\<\%(.*?)\%\>.你需要用来.*?获得非贪婪的模式匹配.
编辑要解决多行问题,您不能使用.通配符,因为它匹配除换行符之外的所有内容.此选项因正则表达式引擎而异.所以,如果你告诉我你的正则表达式引擎,我可以告诉你怎么做.