请问怎么用java正则表达式提取以下文本中指定的内容?

20150819-00:00:01avg-cpu:%user%nice%system%iowait%steal%idle38.710.003.603.150.0054.5... 20150819-00:00:01
avg-cpu: %user %nice %system %iowait %steal %idle
38.71 0.00 3.60 3.15 0.00 54.54

Device: wsec/s avgrq-sz avgqu-sz await svctm %util
sda 4110.60 68.36 0.38 5.40 4.62 32.65
sda1 0.00 18.83 0.00 10.20 8.92 0.00
sda2 3866.36 77.01 0.01 7.02 5.16 29.60

#Hard Utilization#
/ is already use: 72%
/boot is already use: 1%
/home is already use: 63%

#Memery Utilization#
system memery is already use: 75.18%
请问怎么从以上文本中读取%user想对应的数据,%util相对应的数据,use相对应的数据?其中%util和use的数据的规律是可以使用正则表达式提取最后一个结尾,但是%user的数据不知道怎么提取?
展开
 我来答
匿名用户
推荐于2017-12-16
展开全部
// 回答完毕,采纳即可

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Drinks
{
public static final String LINE = System.getProperty("line.separator");
    public static void main(String[] args)
    {
     try
{
     String result = "";
Scanner scanner =new Scanner(new File("data.txt"));
while(scanner.hasNextLine())
{
String line = scanner.nextLine();
result += line + LINE;
}
String userRegex = "[\\s\\S]*%user(\\s+%\\w+){5}[\r\n\\s]+([\\d\\.]+)\\s[\\s\\S]*";
System.out.println("%user想对应的数据: " + result.replaceAll(userRegex, "$2"));
String utilRegex = "sda.*\\s([\\d\\.]+)";
Pattern pattern = Pattern.compile(utilRegex);
Matcher matcher = pattern.matcher(result);
while(matcher.find())
{
System.out.println("%util相对应的数据: " + matcher.group(1));
}
String useRegex = "use:\\s*([\\d\\.%]+)";
pattern = Pattern.compile(useRegex);
matcher = pattern.matcher(result);
while(matcher.find())
{
System.out.println("use相对应的数据: " + matcher.group(1));
}
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}
    }
}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式