Java 正则表达式
正则表达式(Regular Expression, Regex)是一个强大的字符串处理工具,它是一个特殊的字符序列,用于定义搜索模式。在 Java 中,处理正则表达式的核心功能位于 java.util.regex 包中。
什么是正则表达式?
正则表达式可以用来:
- 验证:检查一个字符串是否符合某种格式(如邮箱、手机号)。
- 查找:在一段文本中寻找所有匹配特定模式的子字符串。
- 替换:找到匹配的子字符串并将其替换为其他内容。
- 分割:根据模式来分割字符串。
java.util.regex 包的核心类
Pattern类: 代表一个编译后的正则表达式。一个Pattern对象本身没有公共构造方法,需要通过其静态方法Pattern.compile()来创建。Matcher类: 是一个正则表达式的匹配器引擎。它通过解释Pattern对输入的字符串执行匹配操作。Matcher对象是通过pattern.matcher(inputString)方法获得的。
基本匹配流程
使用正则表达式通常遵循以下三步:
- 使用
Pattern.compile(regex)创建一个Pattern对象。 - 使用
pattern.matcher(input)创建一个Matcher对象。 - 使用
Matcher对象的方法(如find(),matches())来执行匹配。
注意: 在 Java 字符串中,反斜杠
\是一个转义字符,所以为了在正则表达式中使用一个\,你需要在字符串中写入\\。
Matcher 类的常用方法
matches(): 尝试将整个输入字符串与模式进行匹配。只有整个字符串完全匹配时才返回true。find(): 尝试查找输入字符串中与模式匹配的下一个子序列。每次调用都会从上一次匹配结束的位置继续搜索。lookingAt(): 尝试从输入字符串的开头开始匹配模式。如果开头部分匹配,则返回true,不要求整个字符串都匹配。group(): 返回由上一次匹配操作(如find())捕获的子字符串。start()/end(): 返回上一次匹配的子字符串的起始索引和结束索引(不含)。replaceAll(replacement): 替换所有匹配的子字符串。
String 类中的正则表达式方法
为了方便使用,String 类也内置了一些直接支持正则表达式的方法。
-
boolean matches(String regex): 判断整个字符串是否匹配给定的正则表达式。等效于Pattern.matches(regex, this)。 -
String[] split(String regex): 根据正则表达式来分割字符串。 -
String replaceAll(String regex, String replacement): 将所有匹配正则表达式的子字符串替换为指定的字符串。