正則錶達式在java中的應用

左直拳 2021-08-15 13:36:38 阅读数:123

本文一共[544]字,预计阅读时长:1分钟~
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}") : "");
}
版权声明:本文为[左直拳]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210815133619445F.html