目前正在使用此:正則表達式來替換文本中的網址?
MatchCollection urlRegExp = Regex.Matches(text, @"https?://(?:www\.)?[a-zA-Z0-9/;&=:_$+!*'()|~\[\]#%.\\-]+");
更換網址,文本,但它不會讓每一個網址,而且好像我找不到..一個良好的正則表達式這個任何人都可以幫助嗎?
目前正在使用此:正則表達式來替換文本中的網址?
MatchCollection urlRegExp = Regex.Matches(text, @"https?://(?:www\.)?[a-zA-Z0-9/;&=:_$+!*'()|~\[\]#%.\\-]+");
更換網址,文本,但它不會讓每一個網址,而且好像我找不到..一個良好的正則表達式這個任何人都可以幫助嗎?
如果你需要在文本中找到URL,你不需要適應RFC(不管數字是多少),這是完全沒有用處的(而且在遵循標準的模式下幾乎不可能,它也會太慢複雜)。
文中的所有網址都應該被認爲是有效的(和/或必須在生成此文本的人被插入文本之前進行驗證,換句話說,這不是您的工作!)。
所以,你必須找到其他方法。爲此,您必須提出正確的問題:如何區分文本中的URL?
讓我們列表中的通用標準
www.
這些要求,你可以很容易地建立HTTP協議的天真模式:
\b(https?://|www\.)\S+(?=\s|[^\P{P}?]|\z)
注意,一旦你獲得結果,您可以通過內置函數(它通常不處理所有情況,但是現在您知道爲什麼:)自由檢查url的有效性。
是的,但它會與url一起工作,我不知道如果URL是類似的東西:testone123.me 或類似的東西.. – user3352374 2014-09-06 20:23:52
@ user3352374:可能,但沒有辦法知道是否「testone123.me 「是一個域名(以及一個URL)或一個簡單的文本元素。例如,如果構建一個模式來檢測:'\ b \ w + \。\ w +',則看起來像這樣的所有子字符串都會匹配,並且您將獲得錯誤的肯定結果。 (想象有人忘了一個點後的空格:「Bob有一隻貓,我有一隻狗。」 – 2014-09-06 20:33:59
是的,但是你剛纔給我的代碼檢測到了一個Facebook網址或類似的東西嗎?test123呢。 me/fsifi8e3393?:O – user3352374 2014-09-06 20:39:19
可能的重複[什麼是最好的正則表達式來檢查一個字符串是一個有效的URL?](http://stackoverflow.com/questions/161738/what-is-the-best-regular-expression-to -check-if-a-string-is-a-valid-url) – 2014-09-02 01:46:52
你正在使用哪個平臺? – Steve 2014-09-02 01:47:15
@ PM77-1:他/她並不試圖檢查一個url是否有效,而只是在文本中查找url,這是兩個完全不同的任務。 – 2014-09-02 01:54:56