正则表达式
一、正则表达式概述
1.1一句话概括
查找、处理某些规则的字符串
1.2例子
模式串的书写是关键,也就是通过占位符的方式来表达一个串。
举个简单的例子,要查找某个字符串是否包含某个子串?应该怎么写
需要用到的模板串应该是(.*AK47.*),而不是(AK47)。
二、正则表达式的符号
2.1常用符号
. | ^ | $ | [] | [^] | AK | X|Z | /b |
匹配一个 字符 | 匹配开头 | 匹配结尾 | 可选字符 | 非可选 | 严格匹配AK | 匹配X或者Z | 单词分界 |
三、正则表达式能干什么事情?
3.1判断一个字符串是否满足Pattern
//1、判断一个字符串是不是一个模板的字符串
String str = "img.jpg";
//需要满足的规则
String pattern = ".*jpg.*";
System.out.println("str中是否包含pattern模式的字串" + Pattern.matches(pattern, str));
3.2满足Pattern的子串分组
//2、分组已匹配子串
String line = "This order was placed for QT3000! OK?";
String pattern2 = "(\\D*)(\\d+)(.*)";
//创建Pattern对象
Pattern p = Pattern.compile(pattern2);
//创建Matcher对象
Matcher m = p.matcher(line);
while (m.find()) {
int n = m.groupCount();
while (n >= 0) {
System.out.println("Found value: " + m.group(n));
n--;
}
}
//System.out.println("一共有" + n + "个捕获组");
3.3统计单词个数
//统计给定单词中个数
String regex = "\\bcat\\b";
String input = "cat cat ,cat cat cat sdasdasda sda";
Pattern pattern1 = Pattern.compile(regex);
Matcher matcher = pattern1.matcher(input);
int count = 0;
while (matcher.find()) {
count++;
System.out.println("Match Number is " + count);
System.out.println("Match Number start at " + matcher.start());
System.out.println("Match Number end with " + matcher.end());
System.out.println();
}
3.4替换子串
//替换子串
String regex1 = "a*b";
String input1 = "aabfooaabfooabfoobkkk";
Pattern pattern3 = Pattern.compile(regex1);
Matcher matcher1 = pattern3.matcher(input1);
StringBuffer stringBuffer = new StringBuffer();
while (matcher1.find()) {
//替换
matcher1.appendReplacement(stringBuffer, "zous");
}
// System.out.println("没有拼接到尾部之前的matcher: "+matcher1);
// matcher1.appendTail(stringBuffer);
// System.out.println("拼接到尾部之后的matcher: "+matcher1);
System.out.println("替换后结果放到stringBuffer为 " + stringBuffer.toString());
//使用replace和replaceALL来替换子串
String regex2 = "dog";
String input2 = " dog says meow. All dogs say meow.";
Pattern pattern4 = Pattern.compile(regex2);
Matcher matcher2 = pattern4.matcher(input2);
String result = matcher2.replaceAll("cat");
System.out.println("dog替换为cat: " + result);
String result1 = matcher2.replaceFirst("mouse");
System.out.println("cat替换成mouse: " + result1);