其他
Java正则表达式笔记总结
看雪论坛作者ID:随风而行aa
一
简介
二
学习资料
三
知识总结
1、匹配规则
(1)单个匹配规则
<1>匹配任意字符
<2>匹配数字
<3>匹配常用符
<4>匹配空格字符
<5>匹配非数字
(2)多个字符匹配规则
<1>重复匹配
2、复杂匹配规则
(1)匹配开头和结尾
(2)匹配指定范围
字符串:"1234567"
正则表达式:[1-9]\d{6,7} 理解为:范围限定+正则。
(3)或规则匹配
(4)使用括号
3、分组匹配
//样例代码
String str = "";
String reg = "";
//设置正则匹配式
Pattern Pattern pattern = Pattern.compile = Pattern.compile(reg,Pattern.CASE_INSENSITIV); //Pattern.CASE_INSENSITIV不区分大小
//开始匹配
Matcher matcher = pattern.matcher(str)
//判断是否找到
if(matcher.matches()){
String whole = matcher.group(0);
String area = matcher.group(1);
String tel = matcher.group(2);
}
(1)我们先使用()来将提取的规则分组。
(2)正则表达式从左到右进行匹配。
(3)我们将匹配的结果group提取出来即可。
原理解析:
(1)我们预设正则表达式为:(AB (CD) (E (F) ) 我们可以看出有四个组:
(AB (CD) (E (F) )
(CD)
(E(F))
(F)
这里注意一下最外面的括号可有可无。
(2)取值 四个组匹配的结果分别存放在:m.group(0) m.group(1) m.group(2) m.group(3)。
注意:我们可以使用`groupCount()`查看group长度。
public static String[] RegCheck(String str,String reg){
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(str);
String[] result=new String[m.groupCount()];
if (m.matches()) {
for(int i=0;i<=m.groupCount();i++){
result[i]=m.group(i);
}
return result;
}else {
return result;
}
}
例如:提取 Server: nginx/1.18.0 Server: **** Server: nginx 1.18.0
正则表达式:"Server:\s(\D*)(\s|\/|\*)(.*)"
4、非贪婪匹配
5、搜索和替换
(1)分割字符串
public String[] split(String regex, int limit)
regex -- 正则表达式分隔符
limit -- 分割的份数
if(line.contains("Set-Cookie")){
String[] arr=line.split(":",2);
for(String str:arr){
String arg1 = arr[1];
String arg2 = arr[2];
}
}
(2)搜索字符串
public String substring(int beginIndex, int endIndex)
beginIndex -- 起始索引(包括), 索引从 0 开始
endIndex -- 结束索引(不包括
String s = "the quick brown fox jumps over the lazy dog.";
Pattern p = Pattern.compile("\\wo\\w");
Matcher m = p.matcher(s);
while (m.find()) {
String sub = s.substring(m.start(), m.end());//start第一次匹配到的位置 end匹配完成的索引值
System.out.println(sub);
}
(3)替换字符串
public String replaceAll(String regex, String replacement)
regex -- 匹配此字符串的正则表达式
replacement -- 用来替换每个匹配项的字符串
String s = "The quick\t\t brown fox jumps over the lazy dog.";
String r = s.replaceAll("\\s+", " ");
String r = s.replaceAll("\\s([a-z]{4})\\s", " <b>$1</b> "); //反向引用
四
总结
看雪ID:随风而行aa
https://bbs.pediy.com/user-home-905443.htm
# 往期推荐
4.进程隐藏技术
6.Windows内核不触发PG Hook NtDeviceIoControlFile
球分享
球点赞
球在看
点击“阅读原文”,了解更多!