正则表达式的问题,求帮忙看下~~

paochuyichang 2013-05-28 02:25:18
我在写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。
这个依据正则怎么写?
...全文
154 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oh_Maxy 2013-05-31
  • 打赏
  • 举报
回复
LS写得好啊~
zhsq47 2013-05-31
  • 打赏
  • 举报
回复
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));
	}
}
GetSet_LV 2013-05-28
  • 打赏
  • 举报
回复
给楼主一个思路吧.地址倒着看,就发现一个规律.两个字符之间可以替换成"/"
菖蒲老先生 2013-05-28
  • 打赏
  • 举报
回复
String url = "?ac=login&op=checkemail"; System.out.println(url.replaceAll("[\\?|&].{2}=", "/"));

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧