Java 程序说明正则表达式中的转义字符

javaobject oriented programmingprogramming更新于 2024/8/6 15:49:00

在这里,我们将通过 Java 程序演示正则表达式中的转义字符。在深入探讨该主题之前,让我们先熟悉一下术语"转义字符"和"正则表达式"。

正则表达式

它是正则表达式的首字母缩写词。它是一种 API,允许用户定义字符串模式,这些模式可用于查找、修改和编辑字符串。在字符串的几个领域中,经常使用正则表达式来定义限制,包括电子邮件验证和密码。java.util.regex 包包含正则表达式。

转义字符

当字符前面有反斜杠 (\) 时,它包括数字、字母和标点符号。编译器对这些字符的处理方式不同,这样的字符称为转义字符。

其部分示例包括:

\n - 在此例中,它用于在文本中添加新行。

\' - 在此例中,它用于在文本中添加单引号字符。

转义字符的方法

要在正则表达式中匹配,必须对对正则表达式具有特殊意义的特殊字符(如点 (.)、井号 (#) 等)进行转义。

例如,如果正则表达式中的点 (.) 未进行转义,它将匹配任何单个字符并产生不明确的结果。

在 Java Regex 中,字符可以通过两种不同的方式进行转义,我们将在下面详细研究。

  • 使用 \Q 和 \E 来转义

  • 使用反斜杠 (\) 转义

方法 1. 使用 Q 和 E 转义

要转义字符,我们可以使用 Q 和 E 转义序列。

转义序列以字母 Q 开头,以字母 E 结尾。

在字母 Q 和 E 之间,所有字符都会转义。

通常用于转义许多字符。

示例 1

以下程序演示了使用点的正则表达式中的转义字符的工作方式。

// Java 程序演示如何在 Java 中转义字符
// Regex 使用 \Q 和 \E转义

import java.io.*;
import java.util.regex.*;
//创建一个名为 Regexeg1 的类
public class Regexeg1 {
    // Main 方法
    public static void main(String[] args) {
        // 提供两个字符串作为输入
        String s1 = "Tutorials.point";
        String s2 = "Tutorialspoint";
        //创建一个带点转义的 Pattern 类对象
        Pattern p1 = Pattern.compile("\\Q.\\E");
        //创建一个不带点转义的 Pattern 类对象
        Pattern p2 = Pattern.compile(".");
        // 匹配每个模式和字符串组合的匹配器
        Matcher m1 = p1.matcher(s1);
        Matcher m2 = p1.matcher(s2);
        Matcher m3 = p2.matcher(s1);
        Matcher m4 = p2.matcher(s2);
        // 查找 p1 和 p2 是否匹配并显示布尔值作为结果
        System.out.println("p1 matches s1: " + m1.find());
        System.out.println("p1 与 s2 匹配:" + m2.find());
        System.out.println("p2 与 s1 匹配:" + m3.find());
        System.out.println("p2 与 s2 匹配:" + m4.find());
    }
}

输出

p1 匹配 s1:true
p1 匹配 s2:false
p2 匹配 s1:true
p2 匹配 s2:true

上述 Java 程序演示了在正则表达式中使用 \Q 和 \E 对字符串进行转义。

创建两个输入字符串 s1 和 s2,以及两个 Pattern 对象 p1 和 p2,其中 p1 使用 \Q 和 \E 对点字符"."进行转义,而 p2 不对点字符进行转义。

创建四个 Matcher 对象 m1、m2、m3 和 m4,用于将输入字符串与 Pattern 对象进行匹配。

最后,如果 Pattern 对象 p1 和 p2 使用 Matcher 对象 m1、m2、m3 和 m4 与输入字符串 s1 和 s2 匹配,则程序显示布尔值 true m4,如果不匹配则显示布尔值 false。

方法 2. 使用反斜杠 (//) 作为转义字符

反斜杠可用于转义字符。

由于反斜杠本身就是一个字符,因此我们需要两个反斜杠。

然后,字符被转义。

字符串末尾的字符通常使用它进行转义。

示例 2

以下程序演示了使用反斜杠 (//) 的正则表达式中的转义字符的工作方式。

// Java 程序演示如何在 Java 中转义字符
// 正则表达式使用反斜杠 (\) 进行转义
import java.io.*;
import java.util.regex.*;
//创建一个名为 Regexeg2 的类
public class Regexeg2 {
    public static void main (String[] args) {
        // 提供两个字符串作为输入
        String s1="Tutorials.point";
        String s2="Tutorialspoint";
        //创建一个带点转义的 Pattern 类对象
        Pattern p1=Pattern.compile("\\.");
        //创建一个不带点转义的 Pattern 类对象
        Pattern p2=Pattern.compile(".");
        //每个模式字符串组合有四个匹配器
        Matcher m1=p1.matcher(s1);
        Matcher m2=p1.matcher(s2);
        Matcher m3=p2.matcher(s1);
        Matcher m4=p2.matcher(s2);
        // 查找 p1 和 p2 是否匹配并显示布尔值作为结果
        System.out.println("p1 matches s1: "+m1.find());
        System.out.println("p1 matches s2: "+m2.find());
        System.out.println("p2 与 s1 匹配:"+m3.find());
        System.out.println("p2 与 s2 匹配:"+m4.find());
    }
}

输出

p1 匹配 s1:true
p1 匹配 s2:false
p2 匹配 s1:true
p2 匹配 s2:true

在上面的 Java 代码中,演示了正则表达式中转义字符的用法,即使用反斜杠匹配字符串中的特殊字符。

这里创建了两个输入字符串,即 s1 和 s2,以及两个 Pattern 对象 p1 和 p2,其中 p1 包含点字符"。"用反斜杠转义,而 p2 不转义点字符。

然后创建四个 Matcher 对象,即 m1、m2、m3 和 m4,以将输入字符串与 Pattern 对象进行匹配。

最后,如果 Pattern 对象 p1 和 p2 使用 Matcher 对象 m1、m2、m3 和 m4 与输入字符串 s1 和 s2 匹配,则程序显示布尔值 true,如果不匹配,则显示布尔值 false。

本文阐明了在 Regex 中转义字符的方法。本文首先讨论了术语正则表达式和转义字符。这里讨论了两种方法及其实现,以便清楚地理解该主题。


相关文章