2014-10-23 4 views
0

У меня есть эти образцы текстов, какКак удалить URL из текста

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

Как удалить URLs http://t.co/Wpwj0R1EQm, http://t.co/yPZXvNnugL и т.д. из текста. Мне нужно выполнить анализ настроений и получить чистые слова.

Я могу избавиться от плохих символов с помощью простого регулярного выражения.

Узор удалить http://t.co/ {Безотносительно-первых, слово}

+0

Вы пытаетесь избавиться от всего после https? Потому что тогда это простое регулярное выражение. Если нет, как вы собираетесь определять, когда остановиться? i.e 'что-то я хочу что-то, что хочу https: // somethingIdontwant что-то, что я хочу?? – Jay

ответ

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.... " 
0

Regex.Replace

И я хотел бы попробовать эту Паттен: var regex_url_pattern = @"_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)[email protected])?(?:(?!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, "");

1

Вы можете использовать эту функцию https://stackoverflow.com/a/17253735/2577248

Step1. sub = Найти подстроку между «http: //» и «» (пробел)

Шаг 2. Заменить "http: //" + sub с помощью @ "";

Шаг 3. Повторите 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 , @""); 
} 
2
text = Regex.Replace(text, @"((http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)", ""); 

Узор выше будет соответствовать URL-адрес, как вы хотите, например,

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

в:

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

Вы можете увидеть это в действии в regex fiddle для г т.

+0

Немного объяснения для такого длинного регулярного выражения в порядке. – J0e3gan

+0

@ J0e3gan http://regexr.com/2vtcc –

Смежные вопросы