- Регистрация
- 27.08.2018
- Сообщения
- 172
- Благодарностей
- 19
- Баллы
- 18
Здравствуйте! Второй день бьюсь с регуляркой на C# и не могу победить.
Использую такой C# код (это get-запрос для получения первого видео по запросу на youtube.com):
В итоге ругается на регулярку ошибками:
Компиляция кода Ошибка в действии "CS1001" "Ожидался идентификатор". [Строка: 15; Cтолбец: 39]
Пробовала менять регулярку, вылезают такие ошибки:
Компиляция кода Ошибка в действии "CS1010" "Символ новой строки в константе". [Строка: 15; Cтолбец: 56]
Компиляция кода Ошибка в действии "CS1009" "Нераспознанная управляющая последовательность". [Строка: 15; Cтолбец: 50]
Регулярку составляла в конструкторе регулярок (PM) и проверяла тут: https://regex101.com/r/fC3pM3/17, регулярка правильная.
Пробовала разные варианты регулярки:
(?<=v=).*?(?="")
@(?<=v=).*?(?="")
и т.д. и т.п.
Кусок кода, на котором проверяла регулярку:
Помогите, пожалуйста, в какую сторону хоть смотреть?
Использую такой C# код (это get-запрос для получения первого видео по запросу на youtube.com):
C#:
string userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";
string query = project.Variables["tovar_h1"].Value;
string url = "https://www.youtube.com/results?search_query=" + query;
// GET запрос
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.Method = "GET";
request.UserAgent = userAgent;
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string resultGet = reader.ReadToEnd();
response.Close();
reader.Close();
// Парсим id первого ролика
Match match = Regex.Match(resultGet), "(?<=v=).*?(?=\")";
if (!match.Success) return null;
return match.Value;
Компиляция кода Ошибка в действии "CS1001" "Ожидался идентификатор". [Строка: 15; Cтолбец: 39]
Пробовала менять регулярку, вылезают такие ошибки:
Компиляция кода Ошибка в действии "CS1010" "Символ новой строки в константе". [Строка: 15; Cтолбец: 56]
Компиляция кода Ошибка в действии "CS1009" "Нераспознанная управляющая последовательность". [Строка: 15; Cтолбец: 50]
Регулярку составляла в конструкторе регулярок (PM) и проверяла тут: https://regex101.com/r/fC3pM3/17, регулярка правильная.
Пробовала разные варианты регулярки:
(?<=v=).*?(?="")
@(?<=v=).*?(?="")
и т.д. и т.п.
Кусок кода, на котором проверяла регулярку:
HTML:
<a id="thumbnail" class="yt-simple-endpoint inline-block style-scope ytd-thumbnail" aria-hidden="true" tabindex="-1" rel="null" href="/watch?v=KYbtBUsoRzo">
<yt-img-shadow ftl-eligible="" class="style-scope ytd-thumbnail no-transition" style="background-color: transparent;" loaded=""><!--css-build:shady--><img id="img" class="style-scope yt-img-shadow" alt="" width="360" src="https://i.ytimg.com/vi/KYbtBUsoRzo/hq720.jpg?sqp=-oaymwEZCNAFEJQDSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLDCerzYpPUGkVtIaRgLrPqY4kydYA"></yt-img-shadow>
<div id="overlays" class="style-scope ytd-thumbnail"><ytd-thumbnail-overlay-time-status-renderer class="style-scope ytd-thumbnail" overlay-style="DEFAULT"><!--css-build:shady--><yt-icon class="style-scope ytd-thumbnail-overlay-time-status-renderer" disable-upgrade="" hidden=""></yt-icon><span class="style-scope ytd-thumbnail-overlay-time-status-renderer" aria-label="2 часа 54 минуты 21 секунда">
2:54:21
</span></ytd-thumbnail-overlay-time-status-renderer><ytd-thumbnail-overlay-now-playing-renderer class="style-scope ytd-thumbnail"><!--css-build:shady--><span class="style-scope ytd-thumbnail-overlay-now-playing-renderer">Текущее видео</span>
</ytd-thumbnail-overlay-now-playing-renderer></div>
<div id="mouseover-overlay" class="style-scope ytd-thumbnail"></div>
<div id="hover-overlays" class="style-scope ytd-thumbnail"></div>
</a>