如何在 Java 中使 Java 正则表达式不区分大小写?

2025 年 1 月 7 日 | 阅读 3 分钟

在 Java 中,正则表达式(regex)是用于在字符串中进行模式匹配的强大工具。默认情况下,Java 的正则表达式引擎是区分大小写的,这意味着它在匹配模式和输入字符串时会区分大写和小写字母。但是,在需要时,可以通过一些方法和技术来使 Java 正则表达式不区分大小写

  1. 使用 CASE_INSENSITIVE 标志
  2. 复杂模式下的不区分大小写
  3. 分组下的不区分大小写
  4. 使用修饰符

1. 使用 CASE_INSENSITIVE 标志

Java 提供了一种简单的方法,可以通过将 Pattern 类的 compile 方法与 Pattern.CASE_INSENSITIVE 标志一起使用,来使正则表达式不区分大小写。此标志允许正则表达式引擎在将模式与输入字符串进行匹配时忽略字母大小写的差异。

文件名:RegexExample.java

输出

 
Match found!   

复杂模式下的不区分大小写

文件名:RegexExample2.java

输出

 
Match found at index: 0
Match found at index: 12
Match found at index: 29   

分组下的不区分大小写

要在 Java 中将不区分大小写与正则表达式分组一起使用,我们应用相同的 CASE_INSENSITIVE 标志,但要在模式中包含分组。这是一个例子:

文件名:CaseInsensitiveGroupsExample.java

输出

 
Full match: name: John (email: john.doe@example.com)
Name group: name: John
Name: John
Email group: john.doe@example.com

Full match: name: alice (email: ALICE.SMITH@EXAMPLE.COM)
Name group: name: alice
Name: alice
Email group: ALICE.SMITH@EXAMPLE.COM   

2. 使用修饰符

或者,我们可以将 (?i) 修饰符直接嵌入到正则表达式模式本身中。它会在使用的模式部分局部应用不区分大小写的匹配。

文件名:UsingModifier.java

输出

 
Match found!   

下一个主题Java图像处理