public JObject Extract()
{
if (!string.IsNullOrEmpty(WebPageCode))
{
string pattern = @".*ytcfg\.set\((.*{.*\})\);";
Regex regex = new Regex(pattern);
MatchCollection matches = regex.Matches(WebPageCode);
if (matches.Count > 0)
{
string t = matches[0].Groups[1].Value;
JObject j = Utils.TryParseJson(t);
return j;
}
}
return null;
}
Зависает на строчке if (matches.Count > 0). Если подождать что-то типа 2-3 минуты, то развисает и успешно выполнятся. Почему так долго и почему именно на этой строчке?
Анализируемый текст весит 617 КБ. На сайте regex101.com выполняется мгновенно.
Блин, ну вот как всегда. Только запостил и обнаружил слэш перед точкой. Откуда он взялся - я не знаю. Его не должно быть.
Хотя, нет, стоп Всё правиьно. Слеш ведь должен быть. Чтобы точка обрабатывалась как текстовый символ. Но без него работает, а с ним виснет. Как так?
Оказалось, что паттерн был неправильный. Очень странно, что при неправильном паттерне поиск циклится
И ещё. Кажется, что на сайте и в C# немного разные версии регулярок