我正在使用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等)。