我需要在Java中匹配某个正则表达式模式,我认为我非常接近,任何有经验帮助的人都可以帮忙吗?我已经测试了它至少几个小时,但还没有找到解决方案。
此Regexp基于URL安装,并且必须代表"密钥"到这个URL,因为取决于它可能会改变很多,但总有一些东西...已经映射的字符串匹配:
http://localhost:8080/servlet/;jsessionid=865266C8B1231C35FEDEAA9D66400074?subject=POLITICS
构建我的代码,以便代表URL模式的部分构建在运行时:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test_regexp {
public static void main (String[] args){
String testString = "http://ec2-54-158-62-71.compute-1.amazonaws.com:8080/servlet/TPCW_buy_request_servlet;jsessionid=6FA80FDC52BB22518DB7D587E0876D63?RETURNING_FLAG=Y&UNAME=OGREREBABAREAT&PASSWD=ogrerebabareat&C_ID=1440046&SHOPPING_ID=171";
int beginIndex = testString.indexOf("servlet");
int endIndex = testString.indexOf("jsessionid");
CharSequence cs = new String(testString);
String patt = "\\(?=.*:8080/.*)(?=.*jsessionid=).*";
System.out.println("Pattern: "+patt);
Pattern teste = Pattern.compile(patt);
System.out.println(teste.matcher(cs).matches());
}
}
但最后该模式应该看起来像这样 :
模式:((?=。:8080 /.)(?=。 jsessionid =)。)
PS:模式必须包含URL完整端点(带参数),但不包括sessionId和其他东西
编辑:我忘了提一下,正则表达式也必须有主题参数,这是在会话ID之后,我只是在写这个时才实现它...对于那些想知道我的目的是什么的人,我根据存储在HashSet中的Regexp模式制作LRU缓存。
我非常感谢你的帮助!这是完成项目的最后一项任务!
提前致谢。
答案 0 :(得分:0)
仔细检查您的模式。我不确定前面的反斜杠是什么。
"\\(?=.*:8080/.*)(?=.*jsessionid=).*"
您的模式也很乐意与jsessionid=10:8080/