如何从文本中删除网址

时间:2014-10-23 01:32:06

标签: c#

我有像

这样的示例文本
EA SPORTS UFC  (Microsoft Xbox One, 2014) $40.00 via eBay http://t.co/Wpwj0R1EQm Tibet snake.... http://t.co/yPZXvNnugL

如何从文字中删除网址http://t.co/Wpwj0R1EQmhttp://t.co/yPZXvNnugL等。我需要进行情绪分析并想要干净的话语。

我可以使用简单的正则表达式来消除坏字符。

模式是删除http://t.co/ {Whatever-first-word}

4 个答案:

答案 0 :(得分:3)

text = Regex.Replace(text, @"((http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)", "");

上面的模式会匹配您想要的网址,例如

http://this.com/ah.aspx?id=1

在:

this is a url http://this.com/ah.aspx?id=1 sdfsdf

您可以在regex fiddle中查看此操作。

答案 1 :(得分:2)

正则表达式是你的朋友。

简化您要删除给定字符串中的所有URL的要求。如果我们接受URL是以http开头并以空格结尾的任何内容(URL不能包含空格),那么类似下面的内容就足够了。此正则表达式查找以http开头的任何字符串(也将捕获https)并以空格结尾并将其替换为空字符串

string text = "EA SPORTS UFC  (Microsoft Xbox One, 2014) $40.00 via eBay http://t.co/Wpwj0R1EQm Tibet snake.... http://t.co/yPZXvNnugL";

string cleanedText = Regex.Replace(text, @"http[^\s]+", "");

//cleanedText is now "EA SPORTS UFC  (Microsoft Xbox One, 2014) $40.00 via eBay  Tibet snake.... "

答案 2 :(得分:1)

您可以使用此功能https://stackoverflow.com/a/17253735/2577248

步骤1。 sub =查找" http://"之间的子字符串和" " (白色空间)

第二步。替换" http://" + sub with @"";

步骤3。 Repeat util原始字符串不包含任何" http://t.co/any"

string str = @"EA SPORTS UFC  (Microsoft Xbox One, 2014) $40.00 via eBay http://t.co/Wpwj0R1EQm Tibet snake.... http://t.co/yPZXvNnugL" + " ";

while(str.Contains("http://")){
    string removedStr = str.Substring("http://", @" ");
    str = str.Replace("http://" + removedStr , @"");
}

答案 3 :(得分:0)

Regex.Replace

我会尝试这个模式: var regex_url_pattern = @"_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$_iuS"

组合:

string output = Regex.Replace(input, regex_url_pattern, "");