2016-02-18 76 views
2

如何從字符串中只提取表單XX:YY的時間部分?Java:從字符串中提取特定的REGEXP模式

例如 - 從像一個字符串:

sdhgjhdgsjdf12:34knvxjkvndf,我想只提取12:34

(周圍的字符可以是空間太當然)

我當然可以找到分號,並得到前兩個字符和後二字符,但它是bahhhhhh .....

謝謝!

回答

4

您可以使用此環視基於正則表達式的匹配:

(?<!\d)\d{2}:\d{2}(?!\d) 

RegEx Demo

在Java:

Pattern p = Pattern.compile("(?<!\\d)\\d{2}:\\d{2}(?!\\d)"); 

正則表達式破碎:

(?<!\d) # negative lookbehind to assert previous char is not a digit 
\d{2} # match exact 2 digits 
:  # match a colon 
\d{2} # match exact 2 digits 
(?!\d) # negative lookahead to assert next char is not a digit 

全碼:

Pattern p = Pattern.compile("(?<!\\d)\\d{2}:\\d{2}(?!\\d)"); 
Matcher m = pattern.matcher(inputString); 

if (m.find()) { 
    System.err.println("Time: " + m.group()); 
} 
+0

看起來不錯!但是,我怎麼能從這個字符串中抽出時間呢?謝謝! – dushkin

+1

在Java中使用'Matcher'類並調用'p.matcher'後跟'matcher.find'和'matcher.group'來獲取您的值 – anubhava

+1

是的!我已經設法找到了這個解決方案!非常感謝! – dushkin