Java中的Pattern flags()方法及示例


java.regex 包中的 Pattern 类是正则表达式的编译表示。

此类的 **compile()** 方法接受表示正则表达式的字符串值,并返回一个 **Pattern** 对象,以下是此方法的签名。

static Pattern compile(String regex)

此方法的另一个变体接受表示标志的整数值,以下是带有两个参数的 compile 方法的签名。

static Pattern compile(String regex, int flags)

**Pattern** 类提供各种字段,每个字段代表一个标志。

序号字段和描述
1CANON_EQ
仅当两个字符在规范上相等时才匹配。
2CASE_INSENSITIVE
不区分大小写地匹配字符。
3COMMENTS
允许在模式中使用空格和注释。
4DOTALL
启用 dotall 模式。“.” 元字符匹配所有字符,包括行终止符。
5LITERAL
启用模式的逐字解析。即输入序列中的所有元字符和转义序列都将被视为字面字符。
6MULTILINE
启用多行模式,即整个输入序列被视为单行。
7UNICODE_CASE
启用 Unicode 感知的区分大小写折叠,即与 CASE_INSENSITIVE 一起使用时,如果使用正则表达式搜索 Unicode 字符,则将匹配两种大小写的 Unicode 字符。
8UNICODE_CHARACTER_CLASS
启用预定义字符类和 POSIX 字符类的 Unicode 版本。
9UNIX_LINES
此标志启用 Unix 行模式。

此类的 **flags()** 方法返回当前模式中使用的标志。

示例

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class COMMENTES_Example {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter your name: ");
      String name = sc.nextLine();
      System.out.println("Enter your Date of birth: ");
      String dob = sc.nextLine();
      //Regular expression to accept date in MM-DD-YYY format
      String regex = "^(1[0-2]|0[1-9])/ # For Month\n" + "(3[01]|[12][0-9]|0[1-9])/ # For Date\n"
+ "[0-9]{4}$ # For Year";
      //Creating a Pattern object
      Pattern pattern = Pattern.compile(regex, Pattern.COMMENTS);
      //Creating a Matcher object
      Matcher matcher = pattern.matcher(dob);
      boolean result = matcher.matches();
      if(result) {
         System.out.println("Given date of birth is valid");
      } else {
         System.out.println("Given date of birth is not valid");
      }
      System.out.println("Flag used: "+ pattern.flags());
   }
}

输出

Enter your name:
Krishna
Enter your Date of birth:
09/26/1989
Given date of birth is valid
Flag used: 4

更新于:2019年11月20日

430 次浏览

启动您的职业生涯

完成课程后获得认证

开始学习
广告