[英]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 a
和1: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.