我在Java中匹配正则表达式时遇到问题,我的文字是:
温度:9°C(48°F),风向:South South Westerly,Wind 速度:19mph,湿度: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());
}
}
}
它不会输出任何内容。
答案 0 :(得分:4)
尝试使用Pattern p = Pattern.compile("\\bTemperature:[^,]*");
来逃避。
正如用户John Bollinger在评论中所说:
你需要一个反斜杠来被Pattern类读取和解释, 但字符串文字中的反斜杠需要解释 Java编译器。编译器将加倍的反斜杠转换为a 单反斜杠,就像Pattern需要的那样。
两个反斜杠将编译为一个。
因此,当您从文件或控制台读取正则表达式模式字符串时,您只需要一个反斜杠。