java.util.regex包主要包括以下三个类:
Pattern类:
pattern对象是一个正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个Pattern对象,你必须首先调用其公共静态编译方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第一个参数。
Matcher类:
Matcher对象是对输入字符串进行解释和匹配操作的引擎。与Pattern类一样,Matcher也没有公共构造方法。你需要调用Pattern对象的matcher方法来获得一个Matcher对象。
PatternSyntaxException:
PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
举例:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches
{
public static void main( String args[] ){
// 按指定模式在字符串查找
String line = "This order was placed for QT3000! OK?";
String pattern = "(.*)(\\d+)(.*)";
// 创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
// 现在创建 matcher 对象
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
} else {
System.out.println("NO MATCH");
}
}
}
字符的取值范围
[abc] : 表示可能是a,可能是b,也可能是c。
简洁的字符表示
匹配任意的字符
\d:表示数字 \D:表示非数字 \s:表示由空字符组成,[ \t\n\r\x\f] \S:表示由非空字符组成,[^\s] \w:表示字母、数字、下划线,[a-zA-Z0-9_] \W:表示不是由字母、数字、下划线组成
数量表达式
?: 表示出现0次或1次 +: 表示出现1次或多次 *: 表示出现0次、1次或多次 {n}:表示出现n次 {n,m}:表示出现n~m次 {n,}:表示出现n次或n次以上
逻辑表达式
XY: 表示X后面跟着Y,这里X和Y分别是正则表达式的一部分 X|Y:表示X或Y,比如”food|f”匹配的是foo(d或f),而”(food)|f”匹配的是food或f (X):子表达式,将X看做是一个整体
注:每个()表示一个分组 \2 表示引用第二个分组
正则表达式的运算符优先级:
文档信息
- 本文作者:Xiaofei C
- 本文链接:https://myxinyue.github.io/2023/01/16/java%E6%AD%A3%E5%88%99/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)