正则、切割、替换等其他字符串操作:https://blog.csdn.net/weixin_43732798/article/details/100081039
介绍
Pattern和Matcher用于正则表达式的操作。
Pattern有两种创建方式
- Pattern p = Pattern.compile("规则");
- Pattern p = Pattern.compile("规则", "模式");
Matcher通常使用Pattern的对象进行创建
- Matcher m = p.matcher("要操作的字符串");
Matcher的常用函数
boolean matcher()---尝试将整个字符串与规则进行匹配
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d+");//匹配1个以上的数字
Matcher m = p.matcher("12345");
System.out.println(m.matches());//输出true
}
}
boolean find()---尝试查找与该模式匹配的输入序列的下一个子序列。
String group()---返回由以前匹配操作所匹配的输入子序列。
int start() 返回以前匹配的初始索引。
int end() 返回最后匹配字符之后的偏移量。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d+");//匹配1个以上的数字
Matcher m = p.matcher("12a3456a7");
while ( m.find() ) {
System.out.println(m.group()+"\t位置:["+m.start()+", "+m.end()+"]");
}
}
}
输出
12 位置:[0, 2]
3456 位置:[3, 7]
7 位置:[8, 9]
int groupCount()---返回此匹配器模式中的捕获组数。
String group(int group)---返回在以前匹配操作期间由给定组捕获的输入子序列。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
//三个捕获组分别捕获数字,大写字母,小写字母
Pattern p = Pattern.compile("(\\d+)([A-Z]+)([a-z]+)");
Matcher m = p.matcher("123ABCabc");
if ( m.matches() ) {
for ( int i = 1; i <= m.groupCount(); i++ ) {
System.out.println(m.group(i));//输出所有捕获组
}
}
}
}
输出
123
ABC
abc