【发布时间】:2009-08-03 22:27:36
【问题描述】:
我有这个字符串
String myString ="A~BC~FGH~~zuzy|XX~ 1234~ ~~ABC~01/01/2010 06:30~BCD~01/01/2011 07:45";
我需要提取这 3 个子字符串
1234
06:30
07:45
如果我使用这个正则表达式 \\d{2}\:\\d{2} 我只能提取第一个小时 06:30
Pattern depArrHours = Pattern.compile("\\d{2}\\:\\d{2}");
Matcher matcher = depArrHours.matcher(myString);
String firstHour = matcher.group(0);
String secondHour = matcher.group(1); (IndexOutOfBoundException no Group 1)
matcher.group(1) 抛出异常。
另外我不知道如何提取 1234。这个字符串可以改变,但它总是出现在 'XX~'
您对如何将这些字符串与正则表达式匹配有任何想法吗?
更新
感谢 Adam 的建议,我现在有了这个匹配我的字符串的正则表达式
Pattern p = Pattern.compile(".*XX~ (\\d{3,4}).*(\\d{1,2}:\\d{2}).*(\\d{1,2}:\\d{2})";
我用 matcher.group(1) 匹配数字和 2 小时; matcher.group(2); matcher.group(3);
【问题讨论】:
-
你能显示你的代码吗?这应该与 06:30 匹配,前提是其他一切都井井有条。