Pattern
Pattern是java.util.regex包下处理正则的工具类。Pattern的构造方法是private的。(private Pattern(String p, int f)),实例化要调用complie()。
//源码
public static Pattern compile(String regex) {
return new Pattern(regex, 0);
}
//实例
String regex = "\\#\\{\\w+\\}";
Pattern pattern = Pattern.compile(regex); //正则编译
主要方法
- public String pattern():返回处理之后的正则表达式,比如会将"\w+“转为”\w+"。
- public String[] split(CharSequence input):表示正则表达式分割字符串。
//源码:
public String[] split(CharSequence input) {
return this.split(input, 0); //调用的其实为重载后的spilt()
}
- public String[] split(CharSequence input, int limit):表示正则表达式分割字符串,但限制了分割后字符串的个数,返回的是String类的字符串。
- public static boolean matches(String regex, CharSequence input):进行匹配返回boolean值。
- public Matcher matcher(CharSequence input):用于获取Matcher的实例。
public class Demo05 {
public static void main(String[] args) {
String str = "ABC123";
String number = "aa111bb222cc444dd666eee777fff8888ggg";
String regex = "\\d+";
String regex1 = "\\w+";
Pattern patternA = Pattern.compile(regex); //正则编译
Pattern patternB = Pattern.compile(regex1); //正则编译
System.out.println("pattern():"+patternB.pattern());
System.out.println("split():"+ Arrays.toString(patternA.split(number)));
System.out.println("matcher():"+patternB.matches(regex1,str));
}
}
结果
pattern():\w+
split():[aa, bb, cc, dd, eee, fff, ggg]
matcher():true
Matcher
Matcher是java.util.regex包下处理正则的工具类。//使用pattern.matcher获取Matcher`在这里插入代码片`
Matcher matcher = pattern.matcher(sql); //正则匹配
主要方法
- public String group(int group):用于输出数据,最好为0,测试时输入其他数字会报错。
//源码
public String group() { //调用了group()重载的方法
return this.group(0);
- public boolean find():只要正则表达式有一部分满足正则返回true。
String str = "abc123";
String regex = "\\d+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
while(matcher.find()){ //有一部分满足正则返回true
System.out.println("输出则表示matcher.find()为true");
System.out.println("matcher.group():"+matcher.group());
}
结果
输出则表示matcher.find()为true
matcher.group():123
- public boolean lookingAt():只匹配第一个字符串,匹配成功或失败都将结束。
String str = "abc123";
String regex = "[a-z]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
while(matcher.lookingAt()){
System.out.println("输出则表示matcher.lookingAt()为true");
System.out.println("matcher.group():"+matcher.group());
}
结果
输出则表示matcher.lookingAt()为true
matcher.group():a
输出则表示matcher.lookingAt()为true
matcher.group():a
- public boolean matches():必须完全匹配,不然返回false。
String str = "abc123";
String regex = "[a-z]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
while(matcher.matches()){
//完全匹配,则进来输出数据
System.out.println("输出则表示matcher.matches()为true");
System.out.println("matcher.group():"+matcher.group());
}
结果
//没有结果,表示完全匹配失败