站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题正则表达试问题

正则表达试问题

摘要: 正则表达试问题


如果在"http://www.post/get.jsp?user=zxx&pass=123"这样的URL地址中提取出每个参数的名称和值?这好象需要用正则表达式,由于本人对这个比较陌生,请高手指点一下。



String sourceStr="http://www.post/get.jsp?user=zxx&pass=123";
String regexp = "http://www.post/get.jsp?user=(.*?)&pass=(.*?)";
Pattern tag = Pattern.compile(regexp,Pattern.CASE_INSENSITIVE);
Matcher matcher = tag.matcher(sourceStr);
if(matcher.find())
{
int start = matcher.start(1);
int end = matcher.end(1);
String user= sourceStr.substring(start, end);
start = matcher.start(2);
end = matcher.end(2);
String pass= sourceStr.substring(start, end);
}


你是说参数不固定是么?如果就这两个参数,用不着吧


<script>
var url = "http://www.post/get.jsp?user=zxx&pass=123";
//用来存放参数名字的数组
var paramName=[];
//用来存放参数值的是数组
var paramValue=[];
var i=0;
url.replace(/([^?=&]+)=([^=&]+)&?/g,function($0,$1,$2){paramName[i]=$1;paramValue[i]=$2;i++;});
alert(paramName);
alert(paramValue);
</script>


String sourceStr="([^?|=|&]+)=([^=|&]+)&?";
String regexp = "http://www.post/get.jsp?user=(.*?)&pass=(.*?)";
Pattern tag = Pattern.compile(regexp,Pattern.CASE_INSENSITIVE);
Matcher matcher = tag.matcher(sourceStr);
int index = 0;
while(matcher.find())
{
int start = matcher.start(1);
int end = matcher.end(1);
user[index] = sourceStr.substring(start, end);
start = matcher.start(2);
end = matcher.end(2);
pass[index++] = sourceStr.substring(start, end);
}



List user = new Vertor();
List pass = new Vertor();
var url = "http://www.post/get.jsp?user=zxx&pass=123";
String regexp ="([^?|=|&]+)=([^=|&]+)&?";
Pattern tag = Pattern.compile(regexp,Pattern.CASE_INSENSITIVE);
Matcher matcher = tag.matcher(sourceStr);
while(matcher.find())
{
int start = matcher.start(1);
int end = matcher.end(1);
user.add(sourceStr.substring(start, end));
start = matcher.start(2);
end = matcher.end(2);
pass.add(sourceStr.substring(start, end));
}




如果这个问题要用正则表达式和 split()方法分割该怎么做呢 ?


用正则表达式就OK了,不用split();
JAVA版本:
//要搜索的字符串
String str="http://www.post/get.jsp?user=zxx&pass=123";
//搜索到参数名的存放集合
List url=new ArrayList();
//搜索到对应的参数值的存放集合
List name=new ArrayList();
//正则表达式
Pattern p=Pattern.compile("([^?=&]+)=([^=&]+)&?");
Matcher m=p.matcher(str);

int i=0;
while(m.find()){
url.add(i,m.group(1));
name.add(i,m.group(2));
i++;
}



我需要用split()方法来做 ,请问怎么做。谢谢


我崩溃,还非要用split
String str="http://www.post/get.jsp?user=zxx&pass=123";
String s[];
s=str.split("//?")[1].split("[=&]");

List paramName=new ArrayList();
List paramValue=new ArrayList();

for(int i=0;i if(i%2==0){
paramValue.add(s[i]);
}else{
paramName.add(s[i]);
}
}




↑返回目录
前一篇: 内部类的一道选择题
后一篇: 多态问题