Java正则表达式学习教程
什么是正则表达式?
正则表达式(Regular Expression),通常简写为“regex”或“regexp”,是一种由字符和特殊符号组成的字符串模式,用于匹配和操作文本。可以用于搜索、替换和筛选文本数据,常用于文本处理、数据抽取、文本匹配及文本分割等场景。
Java中的正则表达式
Java中的正则表达式通常使用java.util.regex
包中的类进行操作。常用的类包括:
- Pattern(模式):表示正则表达式的编译后的对象,用于执行正则表达式操作。
- Matcher(匹配器):用于对输入字符串及其子字符串应用正则表达式并作出匹配结果的引擎。
- PatternSyntaxException(模式语法异常):在正则表达式模式中发现语法错误时抛出。
基本正则表达式语法
字符匹配
- 字面值字符:匹配指定的字符,例如
hello
可以匹配hello
。 - 字符组:匹配指定范围内的任意一个字符,例如
[abc]
可以匹配a
、b
或c
。 - 反义字符组:匹配不在指定范围内的任意一个字符,例如
[^abc]
可以匹配除a
、b
、c
之外的任意一个字符。 - 字符范围:匹配指定范围内的任意一个字符,例如
[a-z]
可以匹配任意一个小写字母。 - 转义字符:用于匹配一些特殊字符,例如
\w
可匹配任意一个字母、数字或下划线。
量词
- n+:匹配至少出现n次以上的字符或字符组,例如
a+
可以匹配1个或多个a。 - n*:匹配0个或多个出现n的字符或字符组,例如
a*
可以匹配0个或任意多个a。 - n?:匹配0个或1个出现n的字符或字符组,例如
a?
可以匹配0个或1个a。 - n{m,n}:匹配出现m次到n次的字符或字符组,例如
a{2,4}
可以匹配2个到4个a。
边界匹配
- ^:匹配输入的开始位置。
- $:匹配输入的结束位置。
- \b:匹配一个单词的边界,例如
\bthe\b
可以匹配“the”,但不匹配“then”、“there”等。
示例说明
示例一
要求:匹配输入字符串中所有的数字。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo {
public static void main(String[] args) {
// 定义正则表达式
String regex = "\\d+";
// 定义输入字符串
String input = "abc123def4567";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建Matcher对象并匹配输入字符串
Matcher matcher = pattern.matcher(input);
// 遍历所有匹配结果并输出
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
输出结果为:
123
4567
解释:由于正则表达式\d+
代表匹配一个或多个数字,因此该程序可以匹配输入字符串中所有的数字。
示例二
要求:匹配输入字符串中所有以“the”开头、以“end”结尾的单词。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo {
public static void main(String[] args) {
// 定义正则表达式
String regex = "\\bthe\\w*end\\b";
// 定义输入字符串
String input = "thequickendjumpsoverthelazydog";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建Matcher对象并匹配输入字符串
Matcher matcher = pattern.matcher(input);
// 遍历所有匹配结果并输出
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
输出结果为:
thequickend
解释:由于正则表达式\bthe\w*end\b
代表匹配所有以“the”开头、以“end”结尾的单词,因此该程序可以匹配输入字符串中的“thequickend”。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java正则表达式学习教程 - Python技术站