正则表达式在java中的应用
Posted 左直拳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式在java中的应用相关的知识,希望对你有一定的参考价值。
本文介绍正则表达式在java中的一些应用:
1)判断字符串中是否含有指定子字符串
2)捕获字符串中匹配的子字符串
3)替换字符串中指定的子字符串
4)根据不同情况动态替换字符串中的匹配的子字符串
1、判断字符串中是否含有指定子字符串
import java.util.regex.Matcher;
import java.util.regex.Pattern;
private String checkVideo(String path){
String video = ".mp4|.mov|.flv|.avi";
Pattern r = Pattern.compile(video,Pattern.CASE_INSENSITIVE);//忽略大小写
Matcher m = r.matcher(path);
return (m.find()) ? "视频" : "";
}
2、捕获字符串中匹配的子字符串
1)普通捕获
//sIds = "1,2,45,6,36"
List<Integer> rainIds = new ArrayList<Integer>();
Pattern r = Pattern.compile("\\\\d+");
Matcher m = r.matcher(sIds);
if(m.find()){
for(int i = 0;i < m.groupCount();i++){
rainIds.add(Integer.parseInt(m.group(i)));
}
}
return rainIds;//得到整型数组:[1,2,45,6,36]
2)捕获分组?
private String getTimeStr(String filename){
String pattern = "(?<t>\\\\d{12})_\\\\d_\\\\d\\\\.";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(filename);
return (m.find()) ? m.group("t") : "";
}
3、替换字符串中指定的子字符串
替换,直接使用正则表达式,无须构造正则对象
String pattern = "https*\\\\://";
String localImageUrl = imgPathLocal + url.replaceAll(pattern,"/").replaceAll("/", "\\\\\\\\");
4、根据不同情况动态替换字符串中的匹配的子字符串
3这个替换,是指定好替换内容。但有时,替换内容要根据具体情况,不能预先指定。java这个我暂时找不到代码,先用c#的来示范一下,说明有这个东东。我相信java也有类似的功能,以后找到再替换。
Regex rx = new Regex(@"\\s{2,}|(?<ordernum>\\d{1,2}[.、])\\s*", RegexOptions.Compiled | RegexOptions.IgnoreCase);
//将正则表达式捕获的分组内容修改后再替换,即符合条件的内容会稍加修改,加个东西或啥的
content = rx.Replace(content, new MatchEvaluator(CapOrderNum));
private string CapOrderNum(Match m)
{//返回修改后的正则表达式捕获的分组内容
return "<br/><br/>" + ((m.Result("${ordernum}") != null) ? m.Result("${ordernum}") : "");
}
以上是关于正则表达式在java中的应用的主要内容,如果未能解决你的问题,请参考以下文章