繁体   English   中英

用户Java正则表达式从String中提取数据

[英]User Java Regex to extract data from String

这是输入格式:

<1> today is <2> current time is <3> humidity is <4>

我想使用Java Regex来获取<1><2><3><4>

例如,如果输入是

Hello today is 03/17 current time is 03:20 humidity is 50% 

我想得到Hello03/17 : 03:2050%

谁能帮我看看正则表达式应该是什么?

更新:

您可以将匹配器与正则表达式配合使用,以提取所需的模板输入语句的各个部分。

String input = "Hello today is 03/17 current time is 03:20 humidity is 50%";
Pattern p = Pattern.compile("(.*) today is (.*) current time is (.*) humidity is (.*)");
Matcher m = p.matcher(input);
if (m.find()) {
        System.out.println("Found greeting: " + m.group(1));
        System.out.println("Found date: " + m.group(2));
        System.out.println("Found time: " + m.group(3));
        System.out.println("Found humidity: " + m.group(4));
}

输出:

Found greeting: Hello
Found date: 03/17
Found time: 03:20
Found humidity: 50%

请注意,捕获组从索引1开始,而不是0,因为m.group(0)返回要对其应用正则表达式的整个原始字符串。

以下是我的原始答案,是在您更新问题之前给出的:

一种简单的方法是将句子按空格分隔,然后保留其中至少有一个数字的任何术语:

String input = "Hello today is 01/17 current time is 03:20 humidity is 50%.";
String[] parts = input.split("\\s+");
for (String part : parts) {
    if (part.matches(".*\\d+.*")) {
        System.out.println(part);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM