Java 正则表达式 (Regex)

2025年4月2日 | 阅读11分钟

Java Regex 或正则表达式是一个用于定义搜索或操作字符串的模式的 API。

它被广泛用于定义字符串的约束,例如密码和电子邮件验证。在学习 Java 正则表达式教程之后,您将能够通过 Java Regex 测试工具测试您的正则表达式。

Java Regex API 在 java.util.regex 包中提供了 1 个接口和 3 个类。

java.util.regex 包

Matcher 和 Pattern 类提供了 Java 正则表达式的功能。 java.util.regex 包为正则表达式提供了以下类和接口。

  1. MatchResult 接口
  2. Matcher 类
  3. Pattern 类
  4. PatternSyntaxException 类
Java Regex API

Matcher 类

它实现了 MatchResult 接口。它是一个正则表达式引擎,用于对字符序列执行匹配操作。

编号。方法描述
1boolean matches()测试正则表达式是否与模式匹配。
2boolean find()找到与模式匹配的下一个表达式。
3boolean find(int start)从给定的起始数字查找与模式匹配的下一个表达式。
4String group()返回匹配的子序列。
5int start()返回匹配子序列的起始索引。
6int end()返回匹配子序列的结束索引。
7int groupCount()返回匹配子序列的总数。

Pattern 类

它是正则表达式的编译版本。它用于为正则表达式引擎定义模式。

编号。方法描述
1static Pattern compile(String regex)编译给定的正则表达式并返回 Pattern 的实例。
2Matcher matcher(CharSequence input)创建一个将给定输入与模式匹配的匹配器。
3static boolean matches(String regex, CharSequence input)它作为 compile 和 matcher 方法的组合。它编译正则表达式并将给定的输入与模式匹配。
4String[] split(CharSequence input)在给定模式的匹配项周围分割给定的输入字符串。
5String pattern()返回正则表达式模式。

Java 正则表达式示例

有三种方法可以在 Java 中编写正则表达式示例。

示例

编译并运行

输出

true true true

正则表达式 . 示例

. (点) 表示单个字符。

示例

编译并运行

Java 正则表达式字符类

编号。字符类描述
1[abc]a、b 或 c(简单类)
2[^abc]除了 a、b 或 c 之外的任何字符(否定)
3[a-zA-Z]a 到 z 或 A 到 Z,包括在内(范围)
4[a-d[m-p]]a 到 d,或 m 到 p:[a-dm-p](并集)
5[a-z&&[def]]d、e 或 f(交集)
6[a-z&&[^bc]]a 到 z,除了 b 和 c:[ad-z](减法)
7[a-z&&[^m-p]]a 到 z,而不是 m 到 p:[a-lq-z](减法)

Java 正则表达式:字符类示例

示例

编译并运行

Java 正则表达式量词

量词指定字符出现的次数。

Regex描述
X?X 出现一次或根本不出现
X+X 出现一次或多次
X*X 出现零次或多次
X{n}X 仅出现 n 次
X{n,}X 出现 n 次或更多次
X{y,z}X 至少出现 y 次但少于 z 次

Java 正则表达式:字符类和量词示例

示例

编译并运行

Java 正则表达式元字符

正则表达式元字符用作简写。

Regex描述
.任何字符(可能匹配或可能不匹配终止符)
\d任何数字,简写为 [0-9]
\D任何非数字,简写为 [^0-9]
\s任何空白字符,简写为 [\t\n\x0B\f\r]
\S任何非空白字符,简写为 [^\s]
\w任何单词字符,简写为 [a-zA-Z_0-9]
\W任何非单词字符,简写为 [^\w]
\b一个单词边界
\B一个非单词边界

Java 正则表达式:元字符示例

示例

Java 正则表达式问题 1

创建一个正则表达式,它只接受字母数字字符。它的长度必须只有六个字符。


正则表达式问题 2


Java Regex 查找器示例

输出

Enter regex pattern: java
Enter text: this is java, do you know java
I found the text java starting at index 8 and ending at index 12
I found the text java starting at index 26 and ending at index 30

让我们借助一个 Java 示例程序来详细了解 Java Regrex。

文件名: JavaRegrex.java

输出

Example 1: Matching a specific pattern
Does the text contain the word 'fox'? false

Example 2: Using Pattern and Matcher classes
3-letter words in the text:

Example 3: Replacing matched patterns
Original text: The cat sat on the mat
Replaced text: The dog sat on the mat

Example 4: Splitting text using regex
Fruits separated: apple banana orange grape

Example 5: Validating email addresses
Validating email addresses:
user@example.com: true
invalid.email.com: false
another.user@domain.co: true

Example 6: Extracting domain names from URLs
Domain extracted from URL: example.com

让我们看另一个例子,以详细了解 Java regrex。

文件名: RegexFeatures.java

输出

Example 1: Extracting phone numbers from text
Phone numbers found in the text: 123-456-7890 987-654-3210 

Example 2: Extracting URLs from text
URLs found in the text: https://www.example.com http://another.example.org 

Example 3: Matching email addresses in text
Email addresses found in the text: email@example.com another.email@example.org 

Example 4: Finding dates in text
Dates found in the text: 2024-02-15 2024/02/20

总的来说,Java 中的正则表达式提供了一种灵活而强大的方式来处理字符串,允许您使用相对简单的模式执行复杂的匹配和操作操作。


Java 正则表达式选择题

1. 正则表达式模式 [a-zA-Z] 匹配什么?

  1. 任何单个小写字母
  2. 任何单个大写字母
  3. 任何单个字母(小写或大写)
  4. 任何单个数字
 

答案:C

解释:模式 [a-zA-Z] 匹配任何单个字符,该字符是小写或大写字母。


2. 哪个正则表达式模式匹配以 "Java" 开头的字符串?

  1. ^Java
  2. Java$
  3. Java.*
  4. .*Java
 

答案:A

解释:^ 字符表示字符串的开头。因此,^Java 匹配以 "Java" 开头的任何字符串。


3. \d 在 Java 正则表达式中的作用是什么?

  1. 它匹配任何空白字符。
  2. 它匹配任何数字。
  3. 它匹配任何非数字字符。
  4. 它匹配任何字母字符。
 

答案:B

解释:正则表达式中的 \d 简写匹配任何数字字符,等效于 [0-9]。


4. 如何在 Java 正则表达式中表示空白字符?

  1. \s
  2. \w
  3. \d
  4. \b
 

答案:A

解释:正则表达式中的 \s 简写匹配任何空白字符,包括空格、制表符和换行符。


5. 哪个正则表达式模式匹配电子邮件地址?

  1. \w+@\w+\.\w+
  2. \d+@\d+\.\d+
  3. \s+@\s+\.\s+
  4. \W+@\W+\.\W+
 

答案:A

解释:模式 \w+@\w+\.\w+ 匹配一个简单的电子邮件地址结构,其中 \w+ 表示一个或多个单词字符,而 @ 和 . 是字面符号。


下一主题Java 异常处理