正则表达式小记
正则遇到一个记录一个好了
1、截取某字符串中间部分
str="appId=XXX&autoType=1&clientSwitch=1&clientType=1&customerName=XXX&msgTimeStatus=0&msgType=1&nickName=XXX=&nightMode=2&openId=XXX&query=XXXX&roleId=5&sourceId=-XX&userSwitch=1"
需求要获取appId后面的值
String patternOldAppId = "(?<=appId=)(.*?)(?=&)"; Pattern a = Pattern.compile(patternOldAppId); Matcher oldAppId = a.matcher(str);
//在str中匹配到需要的字符串,再进行替换 boolean b = oldAppId.find(); str= str.replace(oldAppId.group(0),actulAppId);
?<= appId 以appId开头的字符匹配一次
.*? 匹配后面所有字符一次
?=& 匹配到&截止,匹配第一个&
①做正则匹配的起因是我的逻辑里需要替换appId和sourceId里的值,每次替换和被替换都不一样,所以采取正则匹配替换
②使用正则后的内容,需要先使用find()方法查出来之后再使用,否则会报错