我有一个大字符串,我想从该字符串中获取链接。我可以打印链接。
delete tiko from app_files tiko
. . .;
使用该代码。示例输出:
Pattern pattern = Pattern.compile(".*(?<=overlay-link\" href=\").*?(?=\">).*");
当我尝试string.replaceAll时,正则表达式删除链接并打印另一个变量。
<a title="TITLE" class="overlay-link" href="LINK HERE"></a>
我是正则表达式的新手。你能救我吗?
以下是完整代码:
EX: <a title="TITLE" class="overlay-link" href=""></a>
答案 0 :(得分:0)
如果我正确理解您的问题,您只想提取href标记中指定的链接。
为此,您应该在正则表达式中使用捕获组,而不是尝试替换所有。
replaceAll方法正在准确地找到链接并将其替换为空字符串,并根据docs返回完整的结果字符串,这不是所需的结果。
你应该使用的正则表达式是这样的:.*(?<=overlay-link\" href=\")(.*?)(?=\">).*
注意链接周围的捕获组()。
这将允许您查找匹配并访问捕获组1.我找到了一个很好的示例,说明如何在其他question中执行此操作。 (下面粘贴的重要片段)
String line = "This order was placed for QT3000! OK?"; //<a> tag string
Pattern pattern = Pattern.compile("(.*?)(\\d+)(.*)"); //insert regex provided above
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
System.out.println("group 1: " + matcher.group(1)); //This will be your link
System.out.println("group 2: " + matcher.group(2));
System.out.println("group 3: " + matcher.group(3));
}
我添加的评论
注意:索引0代表整个Pattern