Java 如何使用模式和匹配器提取数据

Java 如何使用模式和匹配器提取数据,java,string,url,Java,String,Url,嘿,我正在尝试将旧的url映射到新的url。像- /oldapp/viewReview.do?action=show\u references&bugId=xy12&queueName=OLLD-codeviews 到-newapp/review/reference?bugId=xy12&queueName=OLLD-codeviews 如何使用模式和匹配器匹配模式并从URL中提取bugId和queueName。请帮忙 任何字符后跟?或&,后跟标识符=,以及不能包含&作为一个组的值,然后是任何尾

嘿,我正在尝试将旧的url映射到新的url。像-

/oldapp/viewReview.do?action=show\u references&bugId=xy12&queueName=OLLD-codeviews

到-
newapp/review/reference?bugId=xy12&queueName=OLLD-codeviews


如何使用模式和匹配器匹配模式并从URL中提取bugId和queueName。请帮忙

任何字符后跟
&
,后跟标识符
=
,以及不能包含
&
作为一个组的值,然后是任何尾随字符:

Pattern bugidp = Pattern.compile(".*[?&]bugId=([^&]+).*");
Pattern queuep = Pattern.compile(".*[?&]queueName=([^&]+).*");
Matcher bugidm = bugidp.matcher(url);
Matcher queuem = queuep.matcher(url);
if (bugid.matches() && queuem.matches()) {
    String bugid = bugidm.group(1);
    String qname = queuem.group(1);
    String newrl = String.format("newapp/review/reference?bugId=%s&queueName=%s",
            bugid, qname);
} else {
    // not found
}

我想你可以用lookbehind,比如
“(?)?