Java 如何使用正则表达式从文本中获取值

Java 如何使用正则表达式从文本中获取值,java,regex,Java,Regex,目前我正在用java开发cv解析器。我想获得出生日期的详细信息,所以我为文本开发了正则表达式 Date Of Birth xx-xx-xxxx 作为 (?您可以尝试以下方法: (date of birth)[^\d]*((?:\d{2}-){2}\d{4}) (出生日期)匹配出生日期,不区分大小写 [^\d]*这将允许在扫描数据时忽略除数字以外的任何内容 日期格式。它可以让你更好地控制更多的案例,而不仅仅是两个 ((?:\d{2}-{2}\d{4})它与日期格式匹配 不要忘记在代码中使用不

目前我正在用java开发cv解析器。我想获得出生日期的详细信息,所以我为文本开发了正则表达式

Date Of Birth xx-xx-xxxx
作为

(?您可以尝试以下方法:

(date of birth)[^\d]*((?:\d{2}-){2}\d{4})

  • (出生日期)
    匹配出生日期,不区分大小写
  • [^\d]*
    这将允许在扫描数据时忽略除数字以外的任何内容 日期格式。它可以让你更好地控制更多的案例,而不仅仅是两个
  • ((?:\d{2}-{2}\d{4})
    它与日期格式匹配

  • 不要忘记在代码中使用不区分大小写的选项(请参阅 (样本)

  • 示例代码:

    final String regex = "(date of birth)[^\\d]*((?:\\d{2}-){2}\\d{4})";
    final String string = "Date Of Birth 12-03-1995\n"
         + "Date of Birth: 02-01-2002";
    
    final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
    final Matcher matcher = pattern.matcher(string);
    
    while (matcher.find()) {
        System.out.println("DOB Label: " + matcher.group(1));
        System.out.println("DOB Value: " + matcher.group(2));
    }
    

    你的问题是什么?如果文本为“date of birth:xx xx xxxx”,那么获取出生日期的正则表达式是什么?我没有使用冒号(:)获取值。如果文本为“date of birth xx xx xxxx”(不带冒号:),则上述正则表达式有效好的,正则表达式中没有冒号!另外,如果你有一个实际的Java问题,你可以使用一些Java代码。照原样,这只是正则表达式。@user999请回答你的问题。人们在感兴趣之前不会阅读注释。
    final String regex = "(date of birth)[^\\d]*((?:\\d{2}-){2}\\d{4})";
    final String string = "Date Of Birth 12-03-1995\n"
         + "Date of Birth: 02-01-2002";
    
    final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
    final Matcher matcher = pattern.matcher(string);
    
    while (matcher.find()) {
        System.out.println("DOB Label: " + matcher.group(1));
        System.out.println("DOB Value: " + matcher.group(2));
    }