正则表达式

2023/01/16 正则 共 1180 字,约 4 分钟
水华码客

java.util.regex包主要包括以下三个类:

  • Pattern类:

    pattern对象是一个正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个Pattern对象,你必须首先调用其公共静态编译方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第一个参数。

  • Matcher类:

    Matcher对象是对输入字符串进行解释和匹配操作的引擎。与Pattern类一样,Matcher也没有公共构造方法。你需要调用Pattern对象的matcher方法来获得一个Matcher对象。

  • PatternSyntaxException:

    PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误。

举例:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches
{
    public static void main( String args[] ){

      // 按指定模式在字符串查找
      String line = "This order was placed for QT3000! OK?";
      String pattern = "(.*)(\\d+)(.*)";

      // 创建 Pattern 对象
      Pattern r = Pattern.compile(pattern);

      // 现在创建 matcher 对象
      Matcher m = r.matcher(line);
      if (m.find( )) {
         System.out.println("Found value: " + m.group(0) );
         System.out.println("Found value: " + m.group(1) );
         System.out.println("Found value: " + m.group(2) );
      } else {
         System.out.println("NO MATCH");
      }
   }
}

字符的取值范围

[abc] : 表示可能是a,可能是b,也可能是c。

简洁的字符表示

匹配任意的字符

\d:表示数字 \D:表示非数字 \s:表示由空字符组成,[ \t\n\r\x\f] \S:表示由非空字符组成,[^\s] \w:表示字母、数字、下划线,[a-zA-Z0-9_] \W:表示不是由字母、数字、下划线组成

数量表达式

?: 表示出现0次或1次 +: 表示出现1次或多次 *: 表示出现0次、1次或多次 {n}:表示出现n次 {n,m}:表示出现n~m次 {n,}:表示出现n次或n次以上

逻辑表达式

XY: 表示X后面跟着Y,这里X和Y分别是正则表达式的一部分 X|Y:表示X或Y,比如”food|f”匹配的是foo(d或f),而”(food)|f”匹配的是food或f (X):子表达式,将X看做是一个整体

注:每个()表示一个分组 \2 表示引用第二个分组

正则表达式的运算符优先级:

img

文档信息

Search

    Table of Contents