我正在使用此正则表达式
public static class Node {
int value;
Node next;
Node(int value){
this.value = value;
this.next = null;
}
}
从
获取链接public static void deleteDups(Node n) {
Hashtable<Integer, Boolean> table = new Hashtable<Integer, Boolean>();
Node previous = null;
while (n != null) {
if (table.containsKey(n.value)) previous.next = n.next;
else {
table.put(n.value, true);
previous = n;
}
n = n.next;
}
}
public static void printList(Node list) {
Node currentNode = list;
while(currentNode != null) {
System.out.print(currentNode.value + ", ");
currentNode = currentNode.next;
}
System.out.println("");
}
网址格式错误。它包含一个空格。问题是我希望获得包括“5678”在内的整个链接,但我只能获得“www.example.com/1234”。
我对正则表达式不太好。有人可以提供有效的正则表达式,以便我可以获得整个网址“www.example.com/1234 5678”。
由于
答案 0 :(得分:2)
外部程序会创建一个包含多个
<a href=www.example.com/1234 5678>
标记的html电子邮件。
假设您无法在源代码级别修复它,可以尝试使用正则表达式进行修复。
如果href
属性是唯一属性,则您不必关心=
之后的空格。从您的模式中移除\\s
,它将起作用。
private static final String HREF_PATTERN =
"(?i)\\s*href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">]+))";
^
如果您拥有值的属性,则必须使用预测:
private static final String HREF_PATTERN =
(?i)\\s*href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">]+(?=>|\\s+\\w+=)))
请参阅regex demo
但是,这不适用于nofollow
等属性。