📜  Java正则表达式(1)

📅  最后修改于: 2023-12-03 15:32:03.867000             🧑  作者: Mango

Java正则表达式

正则表达式(Regular Expression),简称为regex,是一种文本匹配模式,用于在文本中搜索特定模式的字符串。Java中支持正则表达式,提供了一个正则表达式引擎,可以用于在文本中进行分析和查找。

正则表达式语法

Java中正则表达式是由特殊字符和普通字符组成的序列,其中特殊字符有特殊的含义。以下是Java中常用的正则表达式特殊字符:

| 字符 | 含义 | | ---- | ---- | | . | 匹配除换行符以外的任意字符 | | \d | 匹配一个数字字符,相当于[0-9] | | \D | 匹配一个非数字字符,相当于[^0-9] | | \s | 匹配一个空白字符,包括空格、制表符、换行符 | | \S | 匹配一个非空白字符 | | \w | 匹配一个单词字符,相当于[a-zA-Z_0-9] | | \W | 匹配一个非单词字符 | | * | 匹配前面的字符0次或多次 | | + | 匹配前面的字符1次或多次 | | ? | 匹配前面的字符0次或1次 | | {n} | 匹配前面的字符恰好n次 | | {n,} | 匹配前面的字符至少n次 | | {n,m} | 匹配前面的字符至少n次,但不超过m次 | | ^ | 匹配字符串的开头 | | $ | 匹配字符串的结尾 | | [] | 方括号表示匹配其中的任何一个字符。例如,[abc]匹配a、b和c中的任意一个字符 | | [^] | 方括号中的^代表不匹配其中的任何一个字符。例如,[^abc]匹配除了a、b、c以外的任意字符 | | () | 圆括号表示捕获分组,可以在之后的表达式中使用。例如,(abc)表示把abc作为一个整体进行匹配,并可以在之后的表达式中引用这个分组 | | | | 竖杠表示“或”操作。例如,a|b表示匹配a或b |

Java中的正则表达式

在Java中,正则表达式的操作都定义在java.util.regex包中,其中最常用的是Pattern和Matcher类。

Pattern类

Pattern类用于表示一个正则表达式,可以通过Pattern.compile()方法创建一个Pattern对象。例如,以下是一个匹配邮箱地址的正则表达式:

String EMAIL_REGEX = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}";
Pattern emailPattern = Pattern.compile(EMAIL_REGEX);
Matcher类

Matcher类用于在文本中查找匹配的字符串。可以通过Pattern.matcher()方法创建一个Matcher对象,然后使用find()、start()、end()方法进行匹配。例如,以下是一个查找文本中所有邮箱地址的示例:

String text = "This is a sample text. My email address is abc@example.com.";
Matcher matcher = emailPattern.matcher(text);
while (matcher.find()) {
    String email = matcher.group(); // 匹配的邮箱地址
    int start = matcher.start(); // 匹配位置的起始索引
    int end = matcher.end(); // 匹配位置的结束索引
    System.out.println(email + " is found from " + start + " to " + end + ".");
}

以上代码输出结果为:

abc@example.com is found from 30 to 47.
总结

正则表达式是Java中常用的文本匹配模式,具有强大的功能和灵活性。熟练掌握正则表达式语法和Java中的实现方式,可以帮助程序员更高效地进行文本处理。