我正在尝试创建一个正则表达式来检查jsp页面中scriptlet标记的出现。
这是我正在使用的正则表达式:
<%@ page import="java.io.*,java.util.*" %>
<%
// Get session creation time.
Date createTime = new Date(session.getCreationTime());
// Get last access time of this web page.
Date lastAccessTime = new Date(session.getLastAccessedTime());
String title = "Welcome Back to my website";
Integer visitCount = new Integer(0);
String visitCountKey = new String("visitCount");
String userIDKey = new String("userID");
String userID = new String("ABCD");
// Check if this is new comer on your web page.
if (session.isNew()){
title = "Welcome to my website";
session.setAttribute(userIDKey, userID);
session.setAttribute(visitCountKey, visitCount);
}
visitCount = (Integer)session.getAttribute(visitCountKey);
visitCount = visitCount + 1;
userID = (String)session.getAttribute(userIDKey);
session.setAttribute(visitCountKey, visitCount);
%>
<html>
<head>
<title>Session Tracking</title>
</head>
<body>
<center>
<h1>Session Tracking</h1>
</center>
<table border="1" align="center">
<tr bgcolor="#949494">
<th>Session info</th>
<th>Value</th>
</tr>
<tr>
<td>id</td>
<td><% out.print( session.getId()); %></td>
</tr>
<tr>
<td>Creation Time</td>
<td><% out.print(createTime); %></td>
</tr>
</table>
</body>
</html>
我在这里遇到的问题是,虽然理想情况下有3个单独的实例被标记,但我的正则表达式会立即标记它。
我的要求是仅标记各个实例。而不是中间代码。
以下是我用来测试我的正则表达式的测试代码:
sleep()
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
以下是仅与标记匹配的regex
:
(<%).*?(%>)
或者您只想返回介于两者之间的内容:
<%(.*?)%>
然后替换为匹配的第一组\1
。
如果您希望.
也匹配新行,请使用(?s)
修饰符:
(?s)<%(.*?)%>
在这里演示: