2015-09-09 55 views
3

我有一段可能包含一些url鏈接的文本段落。我只需要從該字符串中刪除下劃線「_」。除字符串中的鏈接外,從字符串中除去下劃線

但正如我告訴文本有url鏈接和url鏈接也可能有下劃線,但他們的下劃線不應該被刪除。

鏈接可以是任何順序,即可能有一些文本上方或下方的鏈接,基本上這是電子郵件的文本內容,將通過電子郵件發送。

我正在考慮使用一些正則表達式,但會從鏈接中刪除下劃線,以及我不想要的。我正在考慮取出這些鏈接,然後刪除下劃線,然後再次添加文本中的鏈接,但正如我告訴鏈接可以以不同的順序,即文本是動態內容。

任何指導將不勝感激,我會從那裏採取。謝謝。

回答

5

您可以使用可變寬度的負面向後看(?<!\b(?:https?://\S*|www\.))_

(?<!\b(?:https?://|www\.)\S*)_ 

demo

此正則表達式將匹配之前沒有與http:///https:///www.任何遵循任何_除空格以外的任何字符數(\S*)。

C#:

var res = Regex.Replace(str, @"(?<!\b(?:https?://|www\.)\S*)_", string.Empty); 
+0

你是真棒!你的答案是99%完美,在你的演示中,請將這個www.google.com改爲www.goo_gle.com。這也是匹配的,請你檢查一下。 –

+2

對不起,現在不行,我在開頭放錯了'\ S *'。請刷新並再次點擊演示鏈接。 –

+0

是的,它現在有用,我刷新了頁面。這很完美,謝謝。 –