我有像
这样的示例文本EA SPORTS UFC (Microsoft Xbox One, 2014) $40.00 via eBay http://t.co/Wpwj0R1EQm Tibet snake.... http://t.co/yPZXvNnugL
如何从文字中删除网址http://t.co/Wpwj0R1EQm,http://t.co/yPZXvNnugL等。我需要进行情绪分析并想要干净的话语。
我可以使用简单的正则表达式来消除坏字符。
模式是删除http://t.co/ {Whatever-first-word}
答案 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)
我会尝试这个模式:
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, "");