Java 正则表达式 : Extracting info from string to variables

标签 java regex

我正在使用 Java 中的正则表达式和以下工作代码提取字符串的三个部分。我对正则表达式比较陌生,使用多个表达式进行如此简单的搜索和提取感觉有点傻。

你们中的任何人都可以帮助我提供更优雅、更简单的解决方案吗?我需要按照代码建议将数据存储在三个单独的变量中。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

    public static void main(String[] args) {

        String input = "lat: 56.894205 long: 008.528896 speed: 000.0 24/02/13 21:21   bat:F signal:F  imei:12345678901";

        String lat = regexSearch("(?<=lat: )\\d+.\\d+", input);
        String lng = regexSearch("(?<=long: )\\d+.\\d+", input);
        String imei = regexSearch("(?<=imei:)\\d+", input);

        if (lat != null && lng != null && imei != null) {
            System.out.println(lat);
            System.out.println(lng);
            System.out.println(imei);
        }
    }

    public static String regexSearch(String regex, String input) {
        Matcher m = Pattern.compile(regex).matcher(input);
        if (m.find()) return m.group();
        return null;
    }

}

输出:

56.894205
008.528896
12345678901

编辑: 我需要代码来处理不同长度的“lat”和“long”数据(例如 56.89405 和 56.894059 等)

最佳答案

您可以使用 Named Capturing Groups 来分隔匹配组,然后将每个匹配组分配给您选择的字符串变量。下面是一个工作示例,您可以从...

String s  = "lat: 56.894205 long: 008.528896 speed: 000.0 24/02/13 21:21   bat:F signal:F  imei:12345678901";
Pattern p = Pattern.compile("lat: (?<lat>\\d+\\.\\d+) long: (?<lng>\\d+\\.\\d+).*imei:(?<imei>\\d+)");
Matcher m = p.matcher(s);
while (m.find()) {
    String lat  = m.group("lat");
    String lng  = m.group("lng");
    String imei = m.group("imei");
    System.out.println(lat);  //=> "56.894205"
    System.out.println(lng);  //=> "008.528896"
    System.out.println(imei); //=> "12345678901"
}

关于Java 正则表达式 : Extracting info from string to variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28089899/

相关文章:

java - 如何在 Java 中将 RSA 公钥转换为 ssh-rsa 公钥?

java - 在 Java 中动态执行多个 BPEL 文件

java - 如果缺少某些日期,如何反序列化?

regex - 从正则表达式中获取参数

c# - 在 .NET 中使用正则表达式从字符串中提取标记

java - 如何使用 Windows 的高 DPI 缩放运行 Java 应用程序?

java - ListView 在自定义适配器中重复项目

regex - Htaccess 更改 php 扩展名

php - 在句点和逗号后自动添加空格,同时避免使用数字

JavaScript 正则表达式异常(无效组)