gpt4 book ai didi

java - 加速 Java 正则表达式

转载 作者:行者123 更新时间:2023-11-30 06:56:11 25 4
gpt4 key购买 nike

我在java中有一个正则表达式来从我抓取的网页中提取某些url。这些 url 基本上是包含在页面中的 JavaScript 和样式表。我选择使用正则表达式来提取这些内容,而不是解析文档,因为这应该更容易,并且解析文档对我来说不会有任何附加值。

为了获取有效的 URL(绝对或相对),我使用以下正则表达式:

([^"',\(]*)/endofurl

它提取 '",( 和 url 末尾之间的任何内容,在本例中为 '/endofurl'。

示例: enter image description here

问题是它没有那么快(可能是因为 ([^"',(]*) 部分)。有没有办法加快速度,例如让它首先查找“/endofurl”部分,然后返回直到到达起始字符之一?

最佳答案

无需为此使用正则表达式。

找到/endofurl:

int endOfUrl = s.indexOf("/endofurl");

然后(检查了 endOfUrl != -1)找到 "(之前:

int start = Math.max(  // Fictional version of Math.max which takes 3 inputs.
s.lastIndexOf('"', endOfUrl),
s.lastIndexOf(',', endOfUrl),
s.lastIndexOf('(', endOfUrl));

然后(检查start != -1)提取字符串:

String substring = s.substring(start + 1, endOfUrl + "/endofurl".length());

然后使用 indexOfString.indexOf(String, int) 重载从 endOfUrl + 1 重复查找下一个匹配项。

关于java - 加速 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41761675/

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