簡體   English   中英

Java正則表達式,從字符串中獲取時間

[英]java regular Expression, fetching time out of a string

我是Java中的正則表達式新手。

我有一個字符串“ 2:05 pm-2:40 pm”,我需要使用正則表達式從單個字符串中獲取“ 2:05 pm”和“ 2:40 pm”

我正在使用follow regex表達式,但是我在某處出錯了,不知道在哪里

public static void main(String args[])
{
    Pattern MY_PATTERN = Pattern.compile("(\\d+)[:](\\d+)(\\s*)((am?)|(pm?))");
    String s = "2:05pm - 2:40pm";
    Matcher m = MY_PATTERN.matcher(s);
    int i=1;
    while (m.find()) {
        System.out.println(m.group(i++));
    }
}

您對group使用是錯誤的:您必須始終使用group(0) ,它表示整個當前匹配項。

總的來說,您的正則表達式太復雜了,這就足夠了:

"\\d+:\\d+\\s*(a|p)m?"

如果您希望接受諸如1:10 a1:10p輸入,但不能接受1:10 否則,您應該使用以下命令:

"\\d+:\\d+\\s*(am|pm)?"

這將接受1:10 : 1:10 am ,但不接受1:10 a

如果要驗證最多兩位數,請使用\\\\d{1,2} ,現在使用\\\\d+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM