Java 正则表达式(Regular Expressions)是一种强大的工具,用于匹配和操作字符串,Java 提供了java.util.regex
包来处理正则表达式,以下是 Java 正则表达式的详解:
基本概念
Pattern: 表示编译后的正则表达式。
Matcher: 用于执行匹配操作的引擎。
2. 创建 Pattern 和 Matcher
import java.util.regex.*; public class RegexExample { public static void main(String[] args) { // 定义一个正则表达式 String regex = "\\d+"; // 匹配一个或多个数字 // 编译正则表达式 Pattern pattern = Pattern.compile(regex); // 要匹配的字符串 String input = "There are 123 apples and 456 oranges."; // 创建 Matcher 对象 Matcher matcher = pattern.matcher(input); // 查找匹配项 while (matcher.find()) { System.out.println("Found a match: " + matcher.group()); } } }
常用方法
Pattern 类的方法
static Pattern compile(String regex)
: 编译给定的正则表达式并创建一个模式对象。
Matcher matcher(CharSequence input)
: 创建一个匹配器,该匹配器将输入与模式进行匹配。
Matcher 类的方法
boolean find()
: 尝试找到下一个匹配的子序列。
boolean matches()
: 尝试将整个区域与模式匹配。
String group()
: 返回上一个匹配操作所匹配的输入子序列。
int start()
: 返回上一个匹配操作所匹配的子序列的起始索引。
int end()
: 返回上一个匹配操作所匹配的子序列的结束索引。
常用的正则表达式符号
.
: 匹配任意单个字符(除换行符)。
: 匹配前面的子表达式零次或多次。
+
: 匹配前面的子表达式一次或多次。
?
: 匹配前面的子表达式零次或一次。
\d
: 匹配一个数字字符。
\w
: 匹配一个单词字符(字母、数字或下划线)。
\s
: 匹配一个空白字符(空格、制表符等)。
^
: 匹配输入字符串的开始位置。
$
: 匹配输入字符串的结束位置。
[...]
: 匹配方括号内的任意一个字符。
|
: 逻辑或,匹配左右任意一个表达式。
()
: 分组,捕获组。
示例代码
匹配邮箱地址
import java.util.regex.*; public class EmailRegexExample { public static void main(String[] args) { String emailRegex = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}"; Pattern pattern = Pattern.compile(emailRegex); String input = "Contact us at support@example.com or sales@example.org"; Matcher matcher = pattern.matcher(input); while (matcher.find()) { System.out.println("Found an email: " + matcher.group()); } } }
替换字符串中的部分内容
import java.util.regex.*; public class ReplaceExample { public static void main(String[] args) { String input = "The price is $100."; String regex = "\\$\\d+"; String replacement = "$200"; String result = input.replaceAll(regex, replacement); System.out.println(result); // The price is $200. } }
Java 正则表达式通过Pattern
和Matcher
类提供了强大的字符串匹配和操作功能,掌握这些基本概念和方法,可以有效地处理各种字符串操作需求。