正则表达式
正则表达式(Regular Expression,简称 Regex 或 RegExp)是一种用于描述字符串模式的工具,广泛应用于字符串的匹配、搜索、替换和验证等操作。它通过特定的语法规则来匹配字符串中的特定模式。
在 Java 中,正则表达式是通过 java.util.regex
包中的 Pattern
和 Matcher
类来实现的。
✅ 正则表达式的基本构成
1. 字符匹配
.
: 匹配任意一个字符(除了换行符)\d
: 匹配一个数字字符,等价于[0-9]
\D
: 匹配非数字字符,等价于[^0-9]
\w
: 匹配一个字母、数字或下划线字符,等价于[a-zA-Z0-9_]
\W
: 匹配非字母、数字或下划线字符,等价于[^a-zA-Z0-9_]
\s
: 匹配一个空白字符(如空格、制表符、换行符等)\S
: 匹配一个非空白字符\b
: 匹配单词边界\B
: 匹配非单词边界
2. 量词
*
: 匹配前面的字符零次或多次+
: 匹配前面的字符一次或多次?
: 匹配前面的字符零次或一次{n}
: 匹配前面字符恰好 n 次{n,}
: 匹配前面字符至少 n 次{n,m}
: 匹配前面字符至少 n 次,至多 m 次
3. 字符集与范围
[abc]
: 匹配字符a
、b
或c
中的任意一个字符[^abc]
: 匹配除a
、b
、c
以外的任意字符[a-z]
: 匹配小写字母中的任意一个字符[A-Z]
: 匹配大写字母中的任意一个字符[0-9]
: 匹配数字中的任意一个字符
4. 分组与选择
()
: 用于分组匹配|
: 表示“或”操作,匹配左边或右边的表达式
5. 其他特殊字符
\
: 转义字符,用于转义特殊字符(如.
、*
、+
等)^
: 匹配输入的开始位置$
: 匹配输入的结束位置
✅ Java 中正则表达式的应用
1. 使用 Pattern
类
Pattern
类代表了一个正则表达式,并提供了许多方法来对字符串进行匹配操作。它是正则表达式操作的核心。
2. 使用 Matcher
类
Matcher
类用于执行与正则表达式相关的匹配操作,如查找、替换、验证等。
3. 常用方法
方法 | 说明 |
---|---|
Pattern.compile(String regex) |
编译一个正则表达式,返回一个 Pattern 对象 |
matcher.find() |
查找匹配的字符串 |
matcher.group() |
获取匹配的子字符串 |
matcher.matches() |
检查整个字符串是否与正则表达式匹配 |
matcher.replaceAll(String replacement) |
替换所有匹配的部分 |
✅ 示例:正则表达式的使用
1. 判断字符串是否匹配正则表达式
1 |
|
- 解释:这个正则表达式检查是否为一个有效的社会安全号码格式(例如:
123-45-6789
)。^
表示字符串开始,\d{3}
表示三位数字,-
匹配一个连字符,\d{2}
表示两位数字,最后的\d{4}
表示四位数字,$
表示字符串结束。
2. 使用 Pattern
和 Matcher
查找匹配内容
1 |
|
- 解释:这个正则表达式匹配字符串中的每个单词(由字母、数字或下划线组成)。
\\b
是单词边界,\\w+
匹配一个或多个字母、数字或下划线。
3. 替换匹配的部分
1 |
|
- 解释:在这个示例中,正则表达式
\\d+
匹配字符串中的所有数字,并将其替换为"many"
。
✅ 总结
正则表达式是一个强大且灵活的工具,在处理字符串匹配、替换和验证时非常有用。Java 提供了 Pattern
和 Matcher
类来实现正则表达式的匹配操作。通过掌握常见的正则语法和 Java 中的操作方法,你可以更加高效地处理字符串相关的任务。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Firefly!