gpt4 book ai didi

Java:使用 Pattern 和 Matcher 查找特定模式

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:23 25 4
gpt4 key购买 nike

这是我的字符串:

KLAS 282356Z 32010KT 10SM FEW090 10/M13 A2997 RMK AO2 SLP145 T01001128 10100 20072 51007

这是一份天气预报。我需要从报告中提取以下数字:10/M13。它是温度和露点,其中 M 表示负值。因此,字符串中的位置可能会有所不同,并且温度可能会表示为 M10/M1310/13M10/13

我已经完成了以下代码:

public String getTemperature (String metarIn){

Pattern regex = Pattern.compile(".*(\\d+)\\D+(\\d+)");
Matcher matcher = regex.matcher(metarIn);

if (matcher.matches() && matcher.groupCount() == 1) {
temperature = matcher.group(1);
System.out.println(temperature);
}

return temperature;
}

显然,正则表达式是错误的,因为该方法总是返回 null。我尝试了数十种变化,但都无济于事。如果有人可以提供帮助,非常感谢!

最佳答案

这将提取您要查找的字符串,并且只有一行代码:

String tempAndDP = input.replaceAll(".*(?<![M\\d])(M?\\d+/M?\\d+).*", "$1");

这是一些测试代码:

public static void main(String[] args) throws Exception {
String input = "KLAS 282356Z 32010KT 10SM FEW090 M01/M13 A2997 RMK AO2 SLP145 T01001128 10100 20072 51007";
String tempAndDP = input.replaceAll(".*(?<![M\\d])(M?\\d+/M?\\d+).*", "$1");
System.out.println(tempAndDP);
}

输出:

M01/M13

关于Java:使用 Pattern 和 Matcher 查找特定模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14574043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com