在Java中,可以使用正则表达式进行字符串匹配,替换,查找和切割等操作。使用正则表达式需要使用Java.util.regex包中的类。
正则表达式基本语法
正则表达式是一种特殊的字符串,可以用于描述匹配一个字符串的规则。正则表达式的基本语法如下:
1. 字符串
表示要匹配的字符串,例如 abc
。
2. 字符集
表示可以匹配的字符集合,例如 [abc]
表示可以匹配 a
、b
、或 c
。
3. 反义
在字符集后加 ^
表示匹配除字符集合外的任意字符,例如 [^abc]
表示匹配除 a
、b
、或 c
以外的任意字符。
4. 重复
表示匹配的次数,例如 a*
表示匹配0个或多个 a
,a+
表示匹配1个或多个 a
,a?
表示匹配0个或1个 a
。
5. 转义字符
某些字符有特殊含义,如果想匹配这些字符本身,需要使用反斜杠对其进行转义,例如匹配点号 .
必须写成 \.
。
Pattern类
在Java中,使用正则表达式需要使用Pattern类。Pattern类表示一个正则表达式,通过调用Pattern类的静态方法compile将字符串表示的正则表达式编译成Pattern对象。
Pattern pattern = Pattern.compile("正则表达式");
Matcher类
Matcher类表示一个匹配器,用于对字符串进行匹配操作。Matcher对象是通过Pattern对象的matcher方法得到的。
Matcher matcher = pattern.matcher("要匹配的字符串");
Matcher类提供了一些方法可以用于对字符串进行查找,替换和切割等操作。
正则表达式匹配
Matcher类中的matches
方法可以判断字符串是否符合给定的正则表达式规则,返回值为Boolean类型。
Pattern pattern = Pattern.compile("[0-9]+");
Matcher matcher = pattern.matcher("12345");
boolean result = matcher.matches();
上述代码中,编译正则表达式 [0-9]+
表示匹配1个或多个数字,然后使用 matcher
对象的 matches
方法匹配字符串 "12345"
。因为字符串满足正则表达式规则,所以 result
变量的值为 true
。
正则表达式替换
Matcher类中的replaceAll方法可以将匹配的字符串全部替换为指定字符串。
Pattern pattern = Pattern.compile("[0-9]+");
Matcher matcher = pattern.matcher("java123");
String result = matcher.replaceAll("");
上述代码中,编译正则表达式 [0-9]+
表示匹配1个或多个数字,然后使用 matcher
对象的 replaceAll
方法将匹配到的数字字符串全部替换为空字符串。最后 result
变量的值为 "java"
。
正则表达式查找和切割
Matcher类中的find方法可以查找匹配的字符串,返回值为Boolean类型。
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher("Java 123 is fun.");
while (matcher.find()) {
System.out.println(matcher.group());
}
上述代码中,编译正则表达式 \\d+
表示匹配1个或多个数字,然后使用 matcher
对象的 find
方法查找匹配的字符串,在循环中打印出匹配到的字符串 "123"
。
Matcher类中的split方法可以用正则表达式对字符串进行切割。
Pattern pattern = Pattern.compile("\\s");
String[] result = pattern.split("Java 123 is fun.");
上述代码中,编译正则表达式 \\s
表示匹配空格字符,然后使用 pattern
对象的 split
方法将原字符串按空格切割成字符串数组 "Java"、"123"、"is"、"fun."
。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA中正则表达式匹配,替换,查找,切割的方法 - Python技术站