正则表达式(Regular Expression,简称Regex)是处理字符串的一种强大工具,尤其在Java编程语言中,它被广泛应用于字符串搜索、替换、验证和解析等操作。掌握Java正则表达式,可以帮助开发者更高效地处理复杂文本。本文将详细介绍Java正则表达式的基础知识,并通过实例解析帮助你轻松应对各种文本处理场景。
一、正则表达式基础知识
1. 预定义字符集
.
: 通常代表任意字符,但不包括行结束符。^
: 匹配输入字符串的起始位置。$
: 匹配输入字符串的结束位置。s
: 匹配任何空白字符,包括空格、制表符、换页符等。S
: 匹配任何非空白字符。d
: 匹配任何数字,等同于[0-9]
。D
: 匹配任何非数字字符。w
: 匹配任何单词字符,包括字母、数字和下划线。W
: 匹配任何非单词字符。
2. 数量修饰符
*
: 前面的字符可以出现0次或无限次。+
: 前面的字符至少出现1次,可以无限次。?
: 前面的字符可以出现0次或1次。{n}
: 前面的字符恰好出现n次。{n,}
: 前面的字符至少出现n次。{n,m}
: 前面的字符出现n到m次。
3. 特殊符号的匹配
- 使用反斜杠
\
对特殊字符进行转义,如匹配美元符号$
应写作\$
。
二、实例应用
1. 匹配最后一个逗号
,
: 这将找到字符串中的最后一个逗号。
String input = "Hello, World, welcome to Java!";
Pattern pattern = Pattern.compile(",(?!.*,)");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println("匹配到的最后一个逗号:" + matcher.group());
}
2. 匹配第一个逗号
,
: 这个表达式会匹配字符串中的第一个逗号。
String input = "Hello, World, welcome to Java!";
Pattern pattern = Pattern.compile("^,.*");
Matcher matcher = pattern.matcher(input);
if (matcher.matches()) {
System.out.println("匹配到的第一个逗号:" + matcher.group());
}
3. 匹配任意字符
[wW]
: 这将匹配任何数量的单词字符或非单词字符。
String input = "Hello, World!";
Pattern pattern = Pattern.compile("[wW]");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println("匹配到的字符:" + matcher.group());
}
4. 匹配第一个空白
s?
: 用于找到字符串中的第一个空白字符,?
表示非贪婪匹配,尽可能少地匹配。
String input = "Hello, World!";
Pattern pattern = Pattern.compile("^.*s");
Matcher matcher = pattern.matcher(input);
if (matcher.matches()) {
System.out.println("匹配到的第一个空白字符:" + matcher.group());
}
三、常用正则表达式大全
- 匹配中文字符:
[u4e00-u9fa5]
- 匹配双字节字符(包括汉字):
[x00-xff]
- 匹配邮箱地址:
[w.-]+@[w.-]+\\.[a-zA-Z]{2,}
- 匹配手机号码:
1[3-9]\\d{9}
- 匹配URL:
(http|https)://[a-zA-Z0-9-.]+\\.[a-zA-Z]{2,}
通过以上实例和常用正则表达式大全,相信你已经对Java正则表达式有了初步的了解。在实际应用中,结合具体场景灵活运用正则表达式规则,可以大大提高代码的简洁性和可维护性。