簡體   English   中英

Java中的正則表達式:轉換URL

[英]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<]*)(?=\\])?並不完全合適,它在下面的示例中包含]

在此處輸入圖片說明

剛嘗試過使用atom進行正則表達式,它只能與url正確匹配:

例

要使其與這兩個URL一起使用,只需像下面這樣更改您的正則表達式:

\[([\w]+?://[^ "\|\t\n\r<]*)\]

如果正則表達式引擎支持后向和前向,則您甚至可以避免將兩個括起來的方括號作為匹配表達式的一部分:

(?<=\[)([\w]+?://[^ "\|\t\n\r<]*)(?=\])

評論后更新了正則表達式

([\w]+?://[^ "\|\t\n\r<]*)(?=\])?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM