Java 程序说明正则表达式中的转义字符
在这里,我们将通过 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 中转义字符的方法。本文首先讨论了术语正则表达式和转义字符。这里讨论了两种方法及其实现,以便清楚地理解该主题。