2015-06-07 3 views
2

Я хочу извлечь из видео-ссылки YouTube.Строка регулярного выражения после строки

string youtubelink = richTextBox1.Text; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(youtubelink); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
StreamReader reader = new StreamReader(response.GetResponseStream()); 
string data = reader.ReadToEnd(); 
Regex views = new Regex("watch-view-count\">" + @"\d+\s\d+"); 
Match v = views.Match(data); 
richTextBox1.Text = Regex.Replace(v.ToString(),"watch-view-count\">", ""); 

Но моя проблема в том, что "@" \ d + \ s \ d + ");" например, когда у видео больше представлений, они не будут отображаться, потому что этот код показывает только xxx xxx-представления (то же самое работает наоборот, если я добавлю еще одну строку, а видео будет иметь меньше просмотров, они также не будут отображаться) Есть ли трюк для регулярного выражения, чтобы предотвратить это? Благодарю.

+1

Я настоятельно рекомендую использовать _not_ использование скрепок экрана, но вместо этого [использовать API YouTube] (http://stackoverflow.com/questions/24347078/retrieving-individual-videos-view-count-youtube-api-v3-0- Javascript). –

+1

+1 к предложению Уве и независимо, я бы избегал регулярного выражения с HTML и использовал парсер HTML, например [HTML Agility Pack] (https://htmlagilitypack.codeplex.com/) – keyboardP

ответ

1

Как насчет

(\d+\s)*\d+ 

В коде это будет

Regex views = new Regex("watch-view-count\">" + @"(\d+\s)*\d+"); 

Инкапсуляция выражение \d+\s в скобках позволяет указать, сколько раз может что группа появится в строке. И это конечно, что у видео есть как минимум \d+ просмотров.

+0

Работала очень хорошо. Большое спасибо! – user2715364

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