2014-03-26 31 views
0

我想寫一個解析器將創建貼文中的鏈接被格式化,像這樣:使用正則表達式拆分格式化字符串URL像計算器

[Site Description](http://www.stackoverflow.com) 

被呈現爲一個標準的HTML鏈接如下:

<a href="http://www.stackoverflow.com">Site Description</a> 

到目前爲止,我有什麼是下面列出的表達和對示例將工作上面,但如果URL的「.COM」後,任何東西,如果將無法正常工作。很明顯,沒有一個正則表達式可以找到每個URL,但希望能夠儘可能地匹配。

(\[)([A-Za-z0-9 -_]*)(\])(\()((http|https|ftp)\://[A-Za-z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?)(\)) 

任何幫助將不勝感激。謝謝。

+1

難道你也許只是認準[]()而不是試圖找到一個地址? – MikeH

+1

檢查[this](http://stackoverflow.com/questions/161738/what-is-the-best-regular-expression-to-check-if-a-string-is-a-valid-url)爲一個檢查有效URL的示例 – MikeH

回答

1

該死的。看起來@Jerry和@MikeH打敗了我。我的回答是最好的,但是,作爲鏈接標籤都是大寫;)

查找內容:\[([^]]+)\]\(([^)]+)\)

替換爲:<A HREF="$2">$1</A>

http://regex101.com/r/cY7lF0

1

那麼,你可以嘗試否定類,所以你不必擔心解析的url本身?

\[([^]]+)\]\(([^)]+)\) 

並將其替換:

<a href="$2">$1</a> 

regex101 demo

或者,也許只用開始部分來識別網址?

\[([^]]+)\]\(((?:https?|ftp)://[^)]+)\) 

該替換是相同的。