日期:2014-05-17  浏览次数:20806 次

正则表达式的问题,求帮忙看下~~
我在写urlrewrite的rule。
比如一个url:
http://www.xxx.com/web/cp.jsp?ac=login&op=checkemail
想换成
http://www.xxx.com/web/login/checkemail

问题就是:一般有两个固定参数,ac,op。但op参数有时候有,有时候没有。
我就想将ac=ac1&op=op1
转换成ac1/op1
如果是ac=ac1(没有op)
就直接ac1。
这个依据正则怎么写?
正则表达式 URL urlrewrite

------解决方案--------------------
package regExp;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class UrlEncoder {

public static String getParameter(String url,String param){
Pattern p=Pattern.compile("(?<=[\\?&]"+param+"=)\\w+");
Matcher m = p.matcher(url);
if(m.find()){
return m.group(0);
}
return null;
}

public static String encode(String url){
String str = url.substring(0, url.lastIndexOf("/"));
String ac = getParameter(url,"ac");
String op = getParameter(url,"op");
return str+"/" + ac + (op == null ? "" : "/" + op );
}

public static void main(String[] args) {
String url = "http://www.xxx.com/web/cp.jsp?ac=login&op=checkemail";
// String url = "http://www.xxx.com/web/cp.jsp?ac=login1";
System.out.println(encode(url));
}
}