当我们想匹配字符串中的一部分,要匹配的内容本身没有什么好的特性,但是其两边具有固定的属性,此时可以考虑正则表达式分组.
如下字符串,我们想匹配biz_conent的值sss123
http://www.baidu.com?biz_content=sss123&other=2323424
使用以下正则进行分组
.*biz_content=(.*?)&.*
String url = "http://www.baidu.com?biz_content=sss123&other=2323424";
String pattern = "(.*biz_content=)(.*?)(&.*)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(url);
if (m.find()) {
String group = m.group(1);
System.out.println(group);
}
如果想替换sss123为sss,可以
(.*biz_content=)(.*?)(&.*)
String url = "http://www.baidu.com?biz_content=sss123&other=2323424";
String pattern = "(.*biz_content=)(.*?)(&.*)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(url);
if (m.find()) {
String content_encode = "sss";
url = url.replaceAll(pattern, "$1" + content_encode + "$3");
System.out.println(url);
}