java正则表达式,字符串正则匹配表达式

需求是这样的我们要提取字符串中变量值

字符串如下:

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++;
}

 

运行在控制台中输出:

 

 

结果中的等号可以通过字符串处理将=干掉;

我们也可以将结果保存到数组中,最后再输出;

 


相关标签:


评论: