2017-03-02 90 views
-3

目前我工作在java.I CV分析器得到文本值想要得到的出生日期的細節,所以我開發的正則表達式的文本如何使用正則表達式

Date Of Birth xx-xx-xxxx 

由於

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

它工作正常。

但我沒有得到值,如果文字是 「出生日期:XX-XX-XXX」

+3

你有什麼問題? – shmosel

+0

如果文本是「出生日期:xx-xx-xxxx」,那麼得到出生日期的正則表達式是什麼?我沒有用冒號(:)得到該值。以上正則表達式的工作原理如下:「出生日期xx-xx-xxxx」(帶出冒號:) – user999

+2

呃,你在正則表達式中沒有冒號! –

回答

2

你可以試試這個:

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

Explanation

  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-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)); 
}