需求是这样的我们要提取字符串中变量值
字符串如下:
String str = "http://004.la/abc.html?id=123&kehu=222&hun=halou&hu=hong";
就是想分别获取到id,kehu,hun,hu对应的值;
正则知识简介:
1. "."表示任何一个字符,匹配所有character;
2. * 重复前面的子模式0次或多次 即表示匹配0个或者多个;
3. ()小括号就是括号内看成一个整体
4. []中括号就是匹配括号内的其中一个
5. {}大括号就是匹配几次
6.
[^abc]表示不包含字符a、b或c。
7.
观察字符串可以发现我们要获取的值是从“=”到&之间的值;所以我们要写个正则表达式符合上面的条件;
符合上面条件是什么呢?我们获取的字符串是什么样的呢?
通过观察我可以发现是以是以“=”开头,一旦遇到“&”即结束;
一旦遇到“&”即结束,就是匹配所有的字符,不包括&,
不包括&,可以用[^&]来表示;
所以匹配所有的字符,不包括&,就是[^&]重复多次;,即[^&]*;
所以正则为:(=)[^&]*
String str = "http://004.la/abc.html?id=123&kehu=222&hun=halou&hu=hong"; Pattern p=Pattern.compile("(=)[^&]*"); Matcher m=p.matcher(str); //进行匹配 while(m.find()){ // 是否寻到匹配字符 System.out.println("匹配结果 "+m.group()); i++; }
运行在控制台中输出:
结果中的等号可以通过字符串处理将=干掉;
我们也可以将结果保存到数组中,最后再输出;
相关标签: