我正在尝试从显示为 JSON 的网页中提取链接列表。我已经使用单独的代码测试了正则表达式,以确保它正常工作,但是我无法让它作为后续条件语句的一部分工作。
如果在条件语句中使用,则以下内容将“true”打印为 boolean 值: System.out.println(Str.matches("\"link\":\"([^\"]+)\","));
public class Main {
public static void main(String[] args) throws Exception {
File fout = new File("out.json");
FileOutputStream fos = new FileOutputStream(fout);
URL a = new URL("https://www.googleapis.com/customsearch/v1?q=eran+ariel&cx=006156390203515615519%3A-lsrgi-_9-o&key=AIzaSyAeDR4GlES4I2hwAbrifRiF7uUDi12pfaM");
URLConnection yc = a.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
String inputLine;
while ((inputLine = in.readLine()) != null) {
if (inputLine.matches("\"link\": \"([^\"]+)\",")) {
System.out.println(inputLine);
bw.write(inputLine);
} else
bw.newLine();
}
in.close();
bw.close();
}
}
没有得到任何结果。
最佳答案
如果您在使用需要匹配整行的Pattern.Matches()
时遇到问题,
使用模式对象 Pattern.matcher()
方法,该方法返回一个 Match
对象,您可以从中
可以使用其 Match.find()
方法来查找子字符串。
您的代码将如下所示
Pattern p = Pattern.compile("\"link\"r\\s*:\\s*\"([^\"]+)\",");
while ((inputLine = in.readLine()) != null) {
Matcher m = p.matcher(inputline);
if (m.find()) {
System.out.println(inputLine);
bw.write(inputLine);
} else
bw.newLine();
}
关于java - 使用 Java 正则表达式提取包含 URL 的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57749079/