我有这句话,我想操纵并获取其信息:
您好。基于公平使用的数据分配 政策 10,240.0MB 。目前的使用量是 2,858.6MB 。平衡: 的 7,381.4MB 即可。您的计划将续订: 00:00:00 28-08-2014 。
我想只采取大胆的部分。我一直在考虑使用Regex来操纵它,但由于结构复杂,我还没有想出办法。
任何人都可以指导我吗?我正在使用Java来做这件事。
答案 0 :(得分:2)
要匹配与10,240.0MB
类似的部分,您可以使用
\b\d{1,3}(?:,\d{3})*[.]\d[KMGT]B\b
要匹配00:00:00 28-08-2014
等部分,您可以使用
\b\d{2}:\d{2}:\d{2} \d{2}-\d{2}-\d{4}\b
如果要组合这两个正则表达式,只需使用OR运算符|
。此外,您必须在String中转义\
以创建此类文字。所以在Java中你需要把它写成
String regex = "\\b\\d{1,3}(?:,\\d{3})*[.]\\d[KMGT]B\\b"
+ "|\\b\\d{2}:\\d{2}:\\d{2} \\d{2}-\\d{2}-\\d{4}\\b";
答案 1 :(得分:1)
如果您完全确定字符串将始终与此类似,则可以使用此正则表达式。
public static void main(String[] args) {
String s = "Hello. Yr data allocation based on Fair Usage Policy is 10,240.0MB. Yr current usage is 2,858.6MB. Balance: 7,381.4MB. Your plan will be renewed on: 00:00:00 28-08-2014.";
Pattern p = Pattern
.compile("(\\d+.*?MB)|(\\d{2}:\\d{2}:\\d{2}\\s\\d{2}-\\d{2}-\\d{4}\\.)");
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group());
}
}
O / P:
10,240.0MB
2,858.6MB
7,381.4MB
00:00:00 28-08-2014.