如何使用Regex从文本中获取值



目前我正在Java中的CV解析器。

Date Of Birth xx-xx-xxxx

AS

(?<=Date (of|Of) Birth)\s*(.*)

而且效果很好。

但是,如果文本为"出生日期:xx-xx-xxx"

,我将无法获得价值

您可以尝试以下方法:

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

解释

  1. (date of birth)匹配出生日期,因为病例不敏感
  2. [^d]*这将允许忽略数字以外的任何东西日期格式。它将让您拥有更好的控制权,不仅仅是两个案例。
  3. ((?:d{2}-){2}d{4})它与日期格式匹配

  4. 不要忘记在您的代码中使用使用情况不敏感的选项(请参阅样本)

示例代码:

final String regex = "(date of birth)[^\d]*((?:\d{2}-){2}\d{4})";
final String string = "Date Of Birth 12-03-1995n"
     + "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));
}

相关内容

  • 没有找到相关文章

最新更新