[英]Regular expression in Java: Converting URLs
我在Java中有一個正則表達式問題。 我有以下代碼可以在相關的HTML超鏈接中轉換URL:
String groupEndOfURL = "[^ \"\\|\\t\\n\\r<]";
dummy = dummy.replaceAll("([\\w]+?://"+groupEndOfURL+"*)","<a href=\"$1\">$1</a>");
這確實可以正確轉換以下URL: http://www.vsa-verlag.de/index.php?id=6576&tx_ttnews[tt_news]=15147
: http://www.vsa-verlag.de/index.php?id=6576&tx_ttnews[tt_news]=15147
6576&tx_ttnews[tt_news]= http://www.vsa-verlag.de/index.php?id=6576&tx_ttnews[tt_news]=15147
但是,以下來自BibTex條目的參考:
Engelhardt A,Kajetzke L(2010):Handbuch Wissensgesellschaft。 Theorien,Themen und Probleme。 比勒費爾德:成績單[ http://www.transcript-verlag.de/978-3-8376-1324-7/handbuch-wissensgesellschaft]
在超級鏈接中包含尾隨的]
,這是不應該發生的(在堆棧溢出時,這里似乎有同樣的錯誤,請參見上文)。
執行以下操作(添加\\\\[
和\\\\]
):
String groupEndOfURL = "[^ \"\\|\\[\\]\\t\\n\\r<]";
dummy = dummy.replaceAll("([\\w]+?://"+groupEndOfURL+"*)","<a href=\"$1\">$1</a>");
不能正確轉換第一個URL示例,因為超鏈接在[tt_news]=15147
處停止。
因此,有人知道我必須如何修改我的正則表達式以接受URL中的[
和]
,但是當它們只是“引用”鏈接時卻不知道嗎?
使用([\\w]+?://[^ "\\|\\t\\n\\r<]*)(?=\\])?
並不完全合適,它在下面的示例中包含]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.