gpt4 book ai didi

java - 使用 Java 正则表达式提取包含 URL 的特定行

转载 作者:行者123 更新时间:2023-12-02 09:33:33 24 4
gpt4 key购买 nike

我正在尝试从显示为 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/

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