在Java中匹配简单正则表达式的问题[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我在Java中匹配正则表达式时遇到问题,我的文本是:

温度:9°C(48°F),风向:南南西风,风速:19英里/小时,湿度:87%,气压:1018mb,上升,能见度:良好

我的正则表达式是

\bTemperature:[^,]*

匹配代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Main {
  public static void main(String[] args) {
    Pattern p = Pattern.compile("\bTemperature:[^,]*");

    Matcher m = p.matcher("Temperature: 10°C (50°F), Wind Direction: South South Easterly, Wind Speed: 25mph, Humidity: 78%, Pressure: 1014mb, Falling, Visibility: Good");

    if(m.find())
    {
      System.out.println(m.group());
    }

  }
}

它不输出任何东西。

java regex
1个回答
4
投票

尝试使用Pattern p = Pattern.compile("\\bTemperature:[^,]*");逃脱。

正如用户John Bollinger在评论中所说:

您需要一个反斜杠才能被Pattern类读取和解释,但字符串文字中的反斜杠需要由Java编译器解释。编译器将加倍的反斜杠转换为单个反斜杠,就像Pattern需要的那样。

两个反斜杠将编译为一个。

因此,当您从文件或控制台读取正则表达式模式字符串时,您只需要一个反斜杠。

© www.soinside.com 2019 - 2024. All rights reserved.