Как только начал знакомиться с Регулярными выражениями, сразу понял почему они так называются - при их использовании хочется регулярно выражаться
@ЮрийХХХ-ж4з5 жыл бұрын
Автор с самого начала был прав, когда сказал что "Лучше него не кто не объяснит". Огромное спасибо автору. Лайк в копилку вам.
@alepawka31534 жыл бұрын
Если у вас много групп получилось в шаблоне, можно им давать названия: Regex.Match(line, "(?'country'.*?)(.*?)(?'latitude'.*?)(?'longtude'.*?)(.*?)(?'timezone'.*?)"); label1.Text = match.Groups["latitude"].Value + " "+ match.Groups["longtude"].Value;
@Alf_Shamuei5 жыл бұрын
Сервер Центробанка упал после твоих учеников
@Fioletka_YT4 жыл бұрын
Лучший преподаватель которого я встречал в жизни)) Тупые выражения превращаются в интересный и мощный инструмент. Спасибо!)
@SULTANVIDEOGAMES5 жыл бұрын
Очень хорошо что ты переводишь названия классов и методов. Это способствует лучшему пониманию материала. Когда слышишь то что Matches не просто заклинание, а Соответствие, запомнить проще.
@redice89282 жыл бұрын
если бы не вы, я не знаю чтоб я делал, научиться чему-то на "хэллоу вордах" курсах невозможно, только здесь я получаю понимание о том что такое программирование.
@XpucT2 жыл бұрын
Красавчик ☝
@bondarenkosergiy1423 жыл бұрын
Спасибо за нормальное объяснение. Отдельно + за харизму :)
@xBETEP4 жыл бұрын
Лучший из лучших. Спасибо Хачатур, что снял такие видео... Если хотя бы, что то заработаю на С# с меня на кофе))))
@igorthelight3 жыл бұрын
Шикарное видео! Просто хотел упомянуть, что произнося API как "апи", Вы наткнётесь на полнейшее непонимание со стороны англоговорящих IT'шников :-) Правильное прочтение - "ЭйПиАй". Может показаться неудобным поначалу, но нужно привыкать произносить правильно.
@Xyjail Жыл бұрын
Ну, хз. Я в школе ещё в 2000 году форматирование текста проходил на информатике)))
@midrim5 жыл бұрын
Часто избегал регулярные выражения, теперь не буду, спасибо тебе👍
@AevienArt3D5 жыл бұрын
Ага! Такое же решение принял! Раньше тоже избегал их как огня
@risoutsoring5 жыл бұрын
Хачатур, привет! Тебя ждет великое будущее как обзорщика "Вилсаком". Приятно слушать и граматное обучение! Спасибо!
@mrbvzgjkmpjdfntkz3 жыл бұрын
37:27 Ошибка! "Расширяем диапазон" и Хачатур добавляет в маску точку написав её через тире, тем самым добавив в диапазон само тире. По идее, правильно так "[^0-9,]"
@РусланГаллямов-и9х3 жыл бұрын
Я тут недавно решил применить в работе регекс, а он как обиделся на меня. Элемент там повторялся слишком много раз. Да ещё и колокольчики были в строке...
@АннаКанатенко-я5ч4 жыл бұрын
Спасибо Вам огромное!!!! Вы единственный кто доступно объяснил!)))
@alexterkov60504 жыл бұрын
Классная подача, очень полезный урок. Спасибо!
@Akelow4 жыл бұрын
В процессе выполнения Д/З пришлось немного повозиться с конвертацией форматов из строки в формат double. Пытался перевести строковой значение широты и долготы, а C# упорно ругался что не верный формат я ему подсовываю, хотя в дебаге число красивое было, везде была точка. Как оказалось все дело было связано с региональными настройками на моем ПК поэтому пришлось конвертировать с доп.параметром: Convert.ToDouble(lblLatitude.Text, CultureInfo.InvariantCulture). Вдруг данная информация кому-то поможет :) Еще немного поигрался с регуляркой и сделал проверку на корректность введенного IP, повесил на событии клика на кнопку: Regex regex = new Regex(@"(^(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])((\.)(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])){3}$)"); if (!regex.IsMatch(textBox1.Text)) { MessageBox.Show("Введен некорректный формат IP адреса."); textBox1.Focus(); return; } С регулярками в принципе немного знаком, часто применяю в PL/SQL по работе, синтаксис отличается, но суть одна и та же в принципе.
@m1xaedzy4 жыл бұрын
привет, а можешь обьяснить эту строку "(^(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])((\.)(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])){3}$)"); - я понимаю, что ограничение , но как оно трактуется правильно? а то не понятно от этой части уже | [0-1] [0-9]
@Akelow4 жыл бұрын
@@m1xaedzy Попробую объяснить, "(^(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])((\.)(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])){3}$)" 1. Символами ^ и $ мы привязываем начало и конец строки. 2. В скобках отделяем группы цифр, например первая группа из 3-х цифр это будет (25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9]) знак | означает "или", в квадратных скобках обозначаем одно число в указанном диапазоне, т.е. получается первые три числа будут или 25[0-5] - 250, 251, 252, 253, 254, 255 или 2[0-4][0-9] - 200 - 209, 210 - 219, 220 - 229, 230 - 239, 240 - 249 или [0-1][0-9]{2} (в фигурных скобках указываем сколько раз повторяться) 000-199 или [0-9]{2} 00-99 или [0-9] - 0-9 3. Дальше идет аналогичная группа, но только уже с точкой и тремя цифрами, которая повторяется 3 раза, это опять же указано в фигурных скобках ((\.)(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])){3} Надеюсь, понятно объяснил.
@m1xaedzy4 жыл бұрын
@@Akelow спасибо огромное!!!))
@Бот5329-и5г2 жыл бұрын
Но Matches же это спички. Я не понял почему у регулярного выражения есть свойства спички, зачем они им и что они собрались поджигать?
@yatsuk_vitalii4 жыл бұрын
Сам пишу под юнити, но захотелось сделать дополнение под ядро. И в первый же день мне пригодился регекс, юсинг для файл стрима и потоки, которые до этого времени я почти не использовал. Не знаю чтобы я делал без твоих видео, спасибо.
@ЮрийДумов2 жыл бұрын
Разбирался со своим кодом и пришла идея как его упростить (много замен в тексте). Решил поделиться :) string Text = "1 Onee, 2 Two, 33 Throoee is good."; var pattern = new List() { @"\d+", "ee", "oo" }; var output = new List() { "Цифра", "ёBbb-т", "OOO-T" }; if(pattern.Count == output.Count) { for (int i = 0; i < output.Count; i++) { var rx = new Regex(pattern[i], RegexOptions.Compiled | RegexOptions.IgnoreCase); //Text = Regex.Replace(Text, pattern[i], output[i]); Text = rx.Replace(Text, output[i]); } Console.WriteLine("Результат: " + Text); } else Console.WriteLine("Ошибка: Количество pattern и замен не совпадает!");
@XpucT2 жыл бұрын
@intron80765 жыл бұрын
Огромное спасибо за уроки!
@1983Boria4 жыл бұрын
Классный чувак. Отлично объясняет!
@MrPronav4 жыл бұрын
Отлично! Разжевал даже больше, чем нужно))
@МаксимЖмачинский-т1ю4 жыл бұрын
Perfecto👌 хорошая инструкция!
@markfull2074 жыл бұрын
Всем привет. Кто знает, как вытянуть имя и фамилию, из файла, если их очень много и они все различные. Пример: First name: Mark Last name: Full Sport: Fitness hall Duration: 8 month Time: After 16:00 Price: 0 First name: Micle Last name: Huliy Sport: Gym + crossfit area Duration: 1 month Time: After 16:00 Price: 0 First name: Dimon-Pokimon Last name: Mikitin Sport: United Duration: One year Time: After 16:00 Price: 0 First name: Natalya Last name: Hyliy Sport: Fighting hall Duration: 1 month Time: Before 16:00 Price: 0 First name: Bogdana Last name: NoName) Sport: Personal training Duration: 1 month Time: After 16:00 Price: 0 First name: C# Last name: Top Sport: United Duration: 1 month Time: After 16:00 Price: 0 Надо сделать на C#
@XpucT4 жыл бұрын
А в каком формате вывод нужен? Mark Full Micle Huliy Dimon-Pokimon Mikitin Natalya Hyliy так?
@markfull2074 жыл бұрын
@@XpucT в один textBox имя, а во второй texBox фамилию
@XpucT4 жыл бұрын
@@markfull207 то есть на основании файла создать на форме текстбоксы? Не очень много будет?
@markfull2074 жыл бұрын
@@XpucT Да, мне так и нужно сделать. Нет, не будет так много, потому что у меня такое ТЗ
@markfull2074 жыл бұрын
@@XpucT Буду очень рад Вам, если Вы мне поможете
@kirillsankov45414 жыл бұрын
Спасибо за объяснение!
@Samantha-kw5pc4 жыл бұрын
Очень ржачная подача, спасибо
@matrix-u1n4 жыл бұрын
Сначала подумал:"а зачем мне это нужно!Все эти потоки такие сложные что ппц"(я только новичок в программировании). Но знаете, полезная штука, особенно в проверке на соответствие какому либо формату в строке.
@alexvolkov62692 жыл бұрын
Лайк однозначно! Автору спасибо за объяснение))))
@wildcat4435Ай бұрын
Страшно за эмоциональное состояние челов, которые после просмотра реально подумали, что JSON надо парсить вручную. Но это закаляет)
@leonbishop74044 жыл бұрын
Не знаю, курица от яйца или яйцо от курицы, но в академии ШАГ(itstep) задают домашние задания по вашим видео, как минимум на эту тему(буквально, задание по regex с эл. почтой, парсингу информации по курсам валют... очень удивился, когда решил посмотреть видео по теме и там один в один задания)
@pf2e60sec3 жыл бұрын
Хороооош ! Спасибо большое !
@BlendLogDev4 жыл бұрын
написал длинное выражение, прочитал вслух, вызвал сатану
@timkuk69354 жыл бұрын
10:05 Неправильно. Знак вопроса означает не "непонятно сколько он повторяется". Правильно сказать что это минимальный квантификатор. Т.е. порядок внутреннего перебора знаком вопроса изменили.
@DunSety5 жыл бұрын
спасибо чувак ты лучший!
@XpucT5 жыл бұрын
🤟
@VictorianinSM Жыл бұрын
Очень познавательный и смешной выпуск. Лайк! Кстати на powershell хорошо тренировать regex и регулярные выражения
Отличное видео и все разжевано, видимо я просто тупой)) Надо будет пересмотреть еще раз, но однозначно лайк!))
@firstlast4933 жыл бұрын
25:11 Подскажи пожалуйста, как сделать так, чтобы при каждом нажатии на кнопку курс доллара обновлялся (допустим, курс постоянно меняется)? Результат выражения записывается в переменную и во второй раз уже не парсится(( Нигде ответа не нашел.
@XpucT3 жыл бұрын
Это Тебе нужно далее по урокам и в отдельном потоке, а ещё лучше async Task с определённым интервалом опрашивать. Либо повесить метод в timer.
@disol58810 ай бұрын
Как можно ограничить ввод символов в tbx? Если например doublу, int, создать ограничение по типу. Есть где примеры?
@MrAlexius6664 жыл бұрын
Уважаемый Хачатур, можно ли таким способом парсить страницу сетевого принтера, а именно количество тонера определенных цветов? Страница сетевого принтера имеет Web интерфейс с этими данными.
@XpucT4 жыл бұрын
Легко!
@MrAlexius6664 жыл бұрын
При парсинге страница выглядит так, как и просмотр кода: ,а на картинке все ясно yadi.sk/i/mu3BUzxnOWiuXA где прячутся данные о состоянии картриджей? Загадка.
@Mr4iloveg4 жыл бұрын
@@MrAlexius666 открой иструменты разработчика и на вкладке "нетворк" смотри куда запросы идут при обновлении страницы.
@K14M Жыл бұрын
А вот такой вопрос по теме. Что если мне в текстБокс нужно ввести дату по такому шаблону "гггг/мм/дд". И этот же текст там введен по умолчанию серым цветом но при клике текстБокс очищается и цвет текста меняется на черный. Если я выхожу ничего не введя то обратно возвращается текст "гггг/мм/дд" и цвет снова меняется на серый. То есть "гггг/мм/дд" это пример того как именно нужно ввести дату. И вот какую маску нужно вводить? Я ввел так if (Regex.IsMatch(releaseDateTextBox1.Text, "[^0-9гмд//]")) И это работает, но при этом разрешает пользователю помимо цифр и слеша вводить и буквы, а если [^0-9//] сделать то сломается серый текст "пример". Что посоветуете? И еще вопрос. Можно ли как то сделать, что б в данном примере 5-й и 8-й символ при вводе всегда был "/". То есть ввожу я вручную например год 1994 и сразу после этого автоматически подставляется "/" потом ввожу месяц 09 и после него так же автоматически вводится "/". Похожее происходит когда в банковском приложении вводишь номер телефона, только цифры, но в между цифра сами вставляются "(" ")" "-" в конкретных местах
@maniakm8975 жыл бұрын
А не будет проще разбить входную строку на масив символов (char), а потом циклом for получить ASCII код каждого елемента и таким образом проводить проверку входных строк на предмет наличия чисел, букв, или других символов ?
@XpucT5 жыл бұрын
Тоже неплохо 👏 Вот за это люблю программирование, что всегда можно что-то улучшить и сделать проще 😇
@policedog757 Жыл бұрын
@@XpucT Мб уже поздновато, но я сделал так) private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { char ipAdress = (char)e.KeyChar; int asciNum = (int)ipAdress; if (!(asciNum == 8 || asciNum >= 48 && asciNum
@Akelow4 жыл бұрын
Решил для получения опыта написать дополнительно маленькую программку, которая с API сайта Московской биржи получает инфу по ц.б., у них несколько страниц каждая отвечает за свою инфу. Вот на одной из страниц (xml - пример страницы iss.moex.com/iss/securities/SU26223RMFS6/aggregates.xml?date=2020-05-19) столкнулся с проблемой, что параметры внутри тега могут располагаться в разных местах (пока не понял из-за чего, но IE и Лис отображают в разных местах, да и в C# вроде гуляют). Так сказать на халявку прорваться с группами регулярки не получилось, долго игрался и вроде решил данную проблему, но мне кажется намудрил через чур..., ниже кусок кода нужна отловить запись где market_name="bonds": private void btnINFO_Click(object sender, EventArgs e) { string line = ""; string sdate = dateSecItogo.Value.ToString("yyyy-MM-dd", CultureInfo.CurrentCulture); string[] separator = { " " }; string urlItogo = $@"iss.moex.com/iss/securities/{txtSECID.Text}/aggregates.xml?date={sdate}"; using (WebClient wc = new WebClient()) { wc.Encoding = Encoding.UTF8; //Информация по итогам торгов line = wc.DownloadString($"{urlItogo}"); var arline = line.Split(separator, StringSplitOptions.RemoveEmptyEntries).ToList(); line = string.Join("", arline.Where(x => x.Contains("market_name=\"bonds\""))); Match match = Regex.Match(line, "numtrades=\"(.*?)\""); txtNumtrades.Text = match.Groups[1].Value; match = Regex.Match(line, "volume=\"(.*?)\""); txtVolume.Text = match.Groups[1].Value; match = Regex.Match(line, "value=\"(.*?)\""); txtValue.Text = match.Groups[1].Value; } } Думал через json (iss.moex.com/iss/securities/SU26223RMFS6/aggregates.json?date=2020-05-19), но мне показалась там сложнее эти данные выцепить, т.к. боюсь что колонки тоже могут менять свои позиции. Хачатур, если не сложно посмотри плиз своим опытным взглядом, может как всегда есть более простое решение, о котором я не знаю :)
@XpucT4 жыл бұрын
На самом деле неплохо, но есть есть json, то лучше сериализацией. Я правда пока не снимал об этом, но найти в инете можно, как всегда. Там есть json?
@Akelow4 жыл бұрын
@@XpucT Да, есть. Вот ссылка на json (iss.moex.com/iss/securities/SU26223RMFS6/aggregates.json?date=2020-05-19), но не понимаю как лучше выцепить данные, боюсь что колонки тоже могут менять свои позиции.
@XpucT4 жыл бұрын
@@Akelow Короче Меня, пожалуй, никто и нигде не пишет =)) dynamic d = new JavaScriptSerializer().Deserialize(new WebClient() .DownloadString("iss.moex.com/iss/securities/SU26223RMFS6/aggregates.json?date=2020-05-19")); string Data(int item) => string.Join(Environment.NewLine, d["aggregates"]["data"][0][item]); label1.Text = Data(7); label2.Text = Data(6); label3.Text = Data(5);
@Akelow4 жыл бұрын
@@XpucT Спасибо тебе большое! Данный способ гораздо проще и удобнее, нужно только подробнее по-изучать его. P.S. Как сказал великий классик А.П.Чехов - Краткость - сестра таланта!
@XpucT4 жыл бұрын
@@Akelow 🤝
@romanbessarab45204 жыл бұрын
Здравствуйте. Не подскажите как сделать так чтобы из строки выводились только цифры
@XpucT4 жыл бұрын
Добрый вечер 🖐 string only_numbers = new String("Есть 4 и даже 5".Where(Char.IsDigit).ToArray());
@antonkuznetsov49785 жыл бұрын
Алё, я еще видос не досмотрел а ты уже лайк поставил)))
@XpucT5 жыл бұрын
Скорость 💪
@Бот5329-и5г2 жыл бұрын
Извините я не понял одну вещь в конце. В условие if мы передаем метод IsMatch который возвращает true если текст соответствует указанному регулярному выражению и false если не соответствует. Так вот когда мы вводим цифру то в if помещается true но код в блоке if не выполняется. Как он понимает когда выполнять код в блоке а когда нет? Мы же не пишем вот так if (Regex.IsMatch(textBox1.Text, "[^0-9-.]") == false). Получается что если там Regex то он по умолчанию срабатывает только на false или как это понять?
@XpucT2 жыл бұрын
Это уже обман зрения какой-то в Вашем вопросе =)) Смотрите: IsMatch("123") - это уже даёт true или false. Не нужно IsMatch("123") приводить к сравнению. Это как: label1.Text == string? Само собой string =) Лучше всего не перематывая идти по каждому уроку с Урока 0 и до конца 👍
@Бот5329-и5г2 жыл бұрын
@@XpucT Теперь понял. У нас же в маске стоит ^ и поэтому если мы цифру вводим получаем false и блок не срабатывает. Не внимательно просто слушал урок) Извините
@toxalol83443 жыл бұрын
I love you! Спасибо тебе!
@tttakkkumi5 жыл бұрын
Можешь сделать отдельный видос о том, как «забустить» свое приложение winForms? То есть ускорить его. На старте в том числе, а то формы довольно долго запускаются иногда.
@arteria-circumflexa65274 жыл бұрын
Писал в универе на Паскале задачки какие-то, а тут сайты парсить? Для меня это как машинку получить в детстве, неужели делаю что-то более, чем консольная херь, которая считает количество отрицательных нечётных цифр в числе.. Огромное спасибо за уроки, это безумие!
@jamade36874 жыл бұрын
я с помощью C# сделал свой язык програмирования AnSy типо паскаля, для обучения
@GoldbergCC4 жыл бұрын
Круто! По самому Regex'у все понятно, а вот с масками, как они составляются, что-то не очень ))) Я не про это видео, а про себя в целом, постоянно косячу с масками в регулярках, особенно, когда, например, надо не просто сделать маску вида (.*?), а нафигачить чуть ли не весь словарь спецсимволов регулярок(например когда ссылки выдергиваешь), вот с этим прям бЯда! Может видосик сделаете на эту тему? или только практика поможет? )))
@XpucT4 жыл бұрын
Для этого есть как раз Dictionary и Serialization. Сниму обязательно 👍
@GoldbergCC4 жыл бұрын
@@XpucT Как раз изучаю )) И заранее большое спасибо!
@bezizibe5 жыл бұрын
Привет, Христ. У меня вопрос такой, есть программа (Отчёт) в программе какие то данные, которые нужно рассылать ежедневно людям, каким образом можно настроить автоматическую рассылку? Пока что на что у меня хватило идей, это с какого-нибудь компьютера путем написания макроса делать скриншоты интерфейса и делать рассылку. Возможно ли это реализовать как то в си шарп без помощи других программ?
@XpucT5 жыл бұрын
Привет. Всё то, что Ты написал, для Меня займёт минут 20. Поэтому можешь начинать учить уроки =) Правда про отправку на e-mail Я пока не снимал видео и про скриншоты, но это легко. Я просто не понял - вопрос всего лишь в том, возможно ли это на C#? Да. Легко. Более чем легко.
@bezizibe5 жыл бұрын
@@XpucT Рад что это легко сделать) спасибо за ответ. В будущем в своих роликах не планируешь показать какой нибудь простой пример как это реализовать?
@XpucT5 жыл бұрын
@@bezizibe Уже записано. Много тем записано. Всё обязательно покажу.
@bezizibe5 жыл бұрын
@@XpucT Для уточнения, я разобрался как отправлять сообщение и отдельно разобрался как делать скриншот, но я не могу этот скриншот вставить в тело письма из-за разного типа данных, а нужно именно, чтобы картинка была в теле письма, а не во вложении.
@XpucT5 жыл бұрын
@@bezizibe вот это не пробовал. Но знаю, что можно указать html синтаксис и встраивать в тело письма. Если не получится, пиши.
@daminoshk42 жыл бұрын
Зачем проверять наличие после запятой пробела если можно заменить запятую на запятую с пробелом и удалить двойные пробелы?
@XpucT2 жыл бұрын
В данном уроке мы не учимся убирать запятые так эффективно, как вы предложили. В данном уроке мы учимся в принципе Regex в C#.
@daminoshk42 жыл бұрын
@@XpucT я ему у вас и учился только что))
@XpucT2 жыл бұрын
@@daminoshk4 тогда да, проще, как Вы написали. Но опять же главное не это, а в принципе уметь читать. Но в любом случае 5 за внимательность 👍
@__Goodwin__3 жыл бұрын
Местами не понимаю автора, рассказывает про мощный регекс, но для того чтоб отменить ввод в тextbox не использует event Argument, а идет через какие то грабли
@TheCrossfor5 жыл бұрын
Хачатур, снимите, пожалуйста, полноценное видео про парсинг сайтов без api, на которых есть пагинация и полускрытая (например есть кусок № тел, но пока не кликнешь, весь не виден) информация, с использованием, anglesharp и htmlagilitypack.
@irinaturlak5 жыл бұрын
Помотри на ExtremeCodeTV ))
@TheCrossfor5 жыл бұрын
@@irinaturlak по-моему там много лишнего, а у Хачатура есть шикарный скил делать всё лаконично и без потери в функционале или скорости, плюс рассказывает более просто и доходчиво, в отличии от экстремшиков, которые любят выпендриться терминами.
@BigPandaBigRules5 жыл бұрын
Хачатур, привет. Есть ли вообще разница при использовании данного кода при событии KeyPress или твоего с помощью Regex при событии TextChange? char number = e.KeyChar; if (!Char.IsDigit(number) && number != 8 && number != 44 && number != 46) // цифры, клавиша BackSpace и запятая { e.Handled = true; }
@XpucT5 жыл бұрын
То же оригинально 👍 Нужно будет сегодня вообще сказать про KeyPress, когда IP забит.
@hristy-A3 жыл бұрын
Помимо сайта metanit и msdn для изучения регулярных выражений советую ресурс ravesli - ravesli.com/uroki-po-regexp/. Там как раз разобран вопрос с использованием мультипликаторов *? +? ??, только нормальным человеческим языком и с примерами, а не "Соответствует предыдущему элементу один или несколько раз, но как можно меньшее количество раз."... Microsoft молодцы, топовое объяснение, спасибо Ну а видео как всегда топ! Спасибо Вам за качественное объяснение и приятную подачу! Краткая разница между * + ? и *? +? ??: 1. (*): top kontent + t.*n => top konten (тут он будет искать самое последнее совпадение "n" в строке) 2. (*?): top kontent + t.*?n => top kon (а тут он выберет первое совпадение "n") (подробнее тут ravesli.com/regulyarnye-vyrazheniya-osnovy/)
@TheNadvista3 жыл бұрын
Добрый день! Помогите подобрать паттерн regex для поиска выражений в строке по следующему принципу 1) выражение может содержать любые символы, но заканчиваться запятой, если оно стоит не в конце строки. Запятые в скобках не учитываются, а саму запятую в конце захватывать не нужно Например строка "word,word(1,2),word(a(1,2)),b(b)" должна разделиться на word word(1,2) word(a(1,2)) b(b) как-то так. Заранее спасибо!
@math15604 жыл бұрын
Отличное видео! Спасибо! Можешь подсказать, что лучше учить, WPF или UWP?
у меня почему то когда я через WebClient к www.cbr.ru/ и многими другими сайтами то ничего не происходит и выдаёт предупреждение (в среде разработки) "В целях безопасности браузер ограничил отображение файлом активного содержимого, которое может получить доступ к компьютеру. Щелкните здесь для выбора нужного действия"
@XpucT5 жыл бұрын
Пример конкретного кода можно?
@Камрад-с1и5 жыл бұрын
@@XpucT я сейчас видео сделаю и скину
@XpucT5 жыл бұрын
@@Камрад-с1и можно код, видео не надо. Мне проще будет проверить.
@Камрад-с1и5 жыл бұрын
@@XpucT private void Button1_Click(object sender, EventArgs e) { string line = ""; using (WebClient wc = new WebClient()) { line = wc.DownloadString("www.cbr.ru/"); } label1.Text = line; } видео на всякий случай: yadi.sk/i/HSSsuQTeYU02Ng
@Камрад-с1и5 жыл бұрын
@@XpucTВсё получилось с TextBox но с лайбл что то не работает щас ещё посижу.
@juniorkot87145 жыл бұрын
Здравствуйте, хорошое видео много что полезного узнал, но вот так и не смог применить для себя, к примеру у меня есть файл в нем имена и номера телефонов, нужно отсортировать только номера, причем номера могут быть введены как с "+" так и без... ну и количество цифр может быть разное, я применил "Regex find = new Regex(@"\+*[0-9]*");" но работает криво, в консоли много лишних строк появляется... буду благодарен за помощь...
@XpucT5 жыл бұрын
Здесь поможет LINQ. Продолжайте смотреть, до LINQ осталось немного. Предпоследнее видео на канале.
@juniorkot87145 жыл бұрын
Благодарность, уроки крутые ) Подача классная )
@juniorkot87145 жыл бұрын
@@XpucT посмотрел, но к сожалению не увидел там ответ...
@satyagrahsatyagrah74152 жыл бұрын
Как сделать, чтобы в visual studio контекстные подсказки были на русском?
@XpucT2 жыл бұрын
Погуглите IntelliSense и IntelliCode. В Настройках это есть. Если есть, но на английском, то установить .NET Framework SDK.
@neuro_picture2 жыл бұрын
Привет, у меня небольшая проблема с картой lat = Convert.ToDouble(match.Groups[11].Value); // Широта lng = Convert.ToDouble(match.Groups[13].Value); // Долгота gMapControl1.Position = new PointLatLng(lat, lng); Мне пишет что не получилось преобразовать
@XpucT2 жыл бұрын
Привет 🖐 Сделай выше lat и lng не double, а var, ибо он в коде на английском ставит плавающую запятую точкой, а при преобразовании запятую.
@neuro_picture2 жыл бұрын
@@XpucT var lat = Convert.ToDouble(match.Groups[11].Value); // Широта var lng = Convert.ToDouble(match.Groups[13].Value); // Долгота gMapControl1.Position = new PointLatLng(lat, lng); Я сделал так, пишет неверный формат
@neuro_picture2 жыл бұрын
делал я всё по этому примеру kzbin.info/www/bejne/eqPciX-bbrKGaJo
@neuro_picture2 жыл бұрын
@@XpucT Я понял проблему, lat = Convert.ToDouble(match.Groups[11].Value); // Широта lng = Convert.ToDouble(match.Groups[13].Value); // Долгота Эти строки почему-то не хотят конвентировать, как бы я не крутил, мне всегда пишет "Входная строка имела неверный формат.". И через parse пробовал. Группы и тд всё правильно в label всё выводится, но не конвентируется. Я хз
@blueboxproduction28235 жыл бұрын
Хачатур, фантазии не хватает, подскажи как спарсить большие данные? я к чему? вот у меня есть такой xml country Россия province Приволжский федеральный округ province Удмуртская Республика area городской округ Ижевск locality Ижевск street улица Ленина house 54 и мне нужно самый нижний улица Холмогорова . Так мой код будет выглядеть пздц ужасно Regex.Match(line, "(.*?)(.*?)(.*?)(.*?)(.*?) и т.д"); Как быть?
@XpucT5 жыл бұрын
На самом деле ужасно не это, а сам xml. Я вижу такой сценарий: string xml = "Твой xml"; string tempxml = xml.Substring(xml.IndexOf("street") + 21); // Удалить всё, что идёт до "street", включая "street" string result = tempxml.Substring(0, tempxml.IndexOf("
@Дмитрийм-л7ф5 жыл бұрын
Спасибо. Было трудно. Но я понял)))
@Fioletka_YT5 жыл бұрын
Приветствую автор: 7:41 секунда как сделать что бы не показало 2 а показало 1, 2;?
@XpucT5 жыл бұрын
Привет 🖐 Также добавить счётчик, который будет foreach Match добавлять в label1.Text Думай, как это реализовать. Подсказку дал =) Просто подсчитывай каждое успешное нахождение. Либо можно самому разбить цифру 2 на составные. Своей опять же формулой.
@Fioletka_YT5 жыл бұрын
@@XpucT я хочу реализовать нумерацию строк ищу любой вариант который как можно быстрее работает, спасибо. Если что-то знаете на эту тему от пишите .
@XpucT5 жыл бұрын
@@Fioletka_YT Вам нужно посмотреть видео про for (int i =0.... kzbin.info/www/bejne/qICxl6h6nNajfrc Также есть видео про LINQ, где приводится хороший пример с IEnumerable: kzbin.info/www/bejne/nXeXiWavp5WhqaM
@Fioletka_YT5 жыл бұрын
@@XpucT Пока в тупике. Создал два текстбокса один в котором текст во втором нумерация. Вот этот код работает крайне медленно)) Если поставить на событие текстового текстбокса код рабочий но медлительный) countN = textBoxLesson.Text.Count(x => x == ' '); textBoxNumbers.Clear(); for (int i = 1; i x == ' '))); По скорости второй вариант меня вполне устраивает, правда я подвязан к 1м. строк ну мне этого за глаза и всегда можно добавить. Так же удивительное явление происходит в конструкторе при создании обьекта циклы работают молненосно быстро. Вам спасибо за качественный контент. Если есть что подсказать буду крайне благодарен.
@AlexPlayer10004 жыл бұрын
Сделай пожалуйста видео по патернам и Zenject! Спасибо крутые уроки.
@hellcat57415 жыл бұрын
Никогда не заменю маму на всякие там пробелы
@NolanSummers-l5b5 жыл бұрын
Подскажи, вот у тебя описания методов(в подсказках которые) на русскомб а у меня при вроде бы русской студио они на английском, где включить, или что докачать?
@XpucT5 жыл бұрын
Если не ошибаюсь, это зависит от версии .NET Framework. Проект ➜ Свойства ➜ Сборка ➜ Выбери последний .NET Framework.
@ВалентинОльховский-т8ы5 жыл бұрын
Привет, у меня есть json ответ, в нем есть много повторяющихся значений которые мне нужно спарсить Вот пример: Там где "Здесь то что нужно парсить" = на каждой строке новое значение "templateId":"Name:(Здесь то что нужно парсить)", Как мне спарсить это и вывести в textBox Чтобы было Akula Ananas Banan Regex То есть спаршеное значение
@ВалентинОльховский-т8ы5 жыл бұрын
Сделал string[] matchArray = new string[matchCount.Count]; for ( int i = 0;i < matchCount.Count; i++) { matchArray[i] = matchList.Value; } richTextBox1.Text = string.Join(" ", matchArray); Теперь выводит то количество сколько находится в запросе, но все они одинаковые то-есть был Banan 1 в запросе и идет Banan 15 раз через
@XpucT5 жыл бұрын
Привет. Тебе нужно дойти до урока про LINQ. Но если нужно прямо сейчас, то: var list = File.ReadAllLines(json ответ).ToList(); var newlist = list.Select(x => x.Replace("\"templateId\":\"Name:(", "")).Select(x => x.Replace(")\",", "")); MessageBox.Show(string.Join(Environment.NewLine, newlist));
@ВалентинОльховский-т8ы5 жыл бұрын
@@XpucT сегодня обязательно все пройду, спасибо огромное :)
@ВалентинОльховский-т8ы5 жыл бұрын
@@XpucT просмотрел видео, и другие некоторые гайды и не работает ничего(
@XpucT5 жыл бұрын
@@ВалентинОльховский-т8ы Код, который Я дал работает. Перед тем, как отправить, проверил лично.
@Мибус3 жыл бұрын
Хачатур, я тут, кажется, нафлудил, т.к. у меня че-то ютуб глючит. Я не вижу свои комментарии спустя несколкьо секунд после публикации, хотя видно что счетчик комментариев увеличивается. Если всем они отображаются, можно почиситить лишнее)
@Мибус3 жыл бұрын
хм. а этот не исчезает. Ютубу чем-то не понравились те комменты?
@XpucT3 жыл бұрын
Привет 🖐 Я не успеваю прочесть комменты. Успел заметить только Первое, что понравилось, потом второе, что понравилось. Целиком не вижу, не пойму зачем KZbin их режет. Всего успел заметить 4 коммента.
@Мибус3 жыл бұрын
@@XpucT у меня там были ссылки на гитхаб и ещё какой-то ресурс, я пробовал и без ссылок, всё равно скрылись почему-то.
@FirstNameLastName-fz8pg Жыл бұрын
Рэгекс, а я до твоего видео риджекс называл))
@leoreign5 жыл бұрын
В шаблоне при выборе любых символов достаточно (.*) знак ? - лишний
@13karatjaws884 жыл бұрын
Бро, у меня не получилось через .* Только через .*?
@MHNfromUA2 жыл бұрын
Супер!
@miniso4ck8048 ай бұрын
спасибо
@dadlord6894 жыл бұрын
Я когда вижу эти объяснения к функциям - иду в инет за объяснениями. Лучше бы ссылку на видос показывали сразу
@ЕвгенияЕвгения-о6э4 жыл бұрын
Здравствуйте! Не могу справиться с элементарной вещью, стыдно, каюсь. string s = "Мама мыла раму"; Match match = Regex.Match(s, "Mам(.*)раму"); Console.WriteLine(match.Groups[1].Value); Т.е. пытаюсь вывести кусок текста между "мамой" и "рамой". Где я напортачила??
@XpucT4 жыл бұрын
Добрый вечер, Женя 🖐 string s = "Мама мыла раму"; Match match = Regex.Match(s, "Мама(.*?)раму"); Console.WriteLine(match.Groups[1].Value);
@ЕвгенияЕвгения-о6э4 жыл бұрын
@@XpucT где тут рыдающий смайл... Спасибо! Но зачем знак вопроса? Почему недостаточно звезды?
@XpucT4 жыл бұрын
@@ЕвгенияЕвгения-о6э это разные вещи. В видео как раз говорил, что есть справка и там подробнее написано про каждый спецсимвол.
@rKvinty3 жыл бұрын
Если подумать не так уж и сложно. Да можно сделать лучше, на впринцепе не плохо
@ЖекаСимаков-у5х5 жыл бұрын
ну вот и моё д з, не знаю насколько правильно я прикрутил карту, но главное, что работает :) github.com/ultrajeka/regex.git
@XpucT5 жыл бұрын
Отлично 👍 Поразила скорость загрузки карты. Просто сверхбыстро!
@ЖекаСимаков-у5х5 жыл бұрын
@@XpucT спасибо
@roman0444 жыл бұрын
Regex b = new Regex("ll"); MatchCollection g = new MatchCollection(b.Matches(a)); !!!!! MatchCollection f = b.Matches(a); Почему нельзя создать экземляр класса MatchCollection через оператор new ? upd: Regex b = new Regex("l"); b.Match(,,); Match c = Regex.Match(a, "", RegexOptions.Multiline); Почему , если создать экземпляр класса Regex , и написать b.Match(,,) и в скобках нужно указать Стринг , инт , инт . А если делать напрямую Regex.Match , то в скобках уже других параметры будут , по идеи они же должны быть одинаковы ?
@@XpucT спасибо. А у меня такой :( forums.overclockers.ru/viewtopic.php?p=16254963#p16254963
@ВладимирРысев-я9й5 жыл бұрын
Зачем парсить из json или xml если есть сериализация в объекты?
@XpucT5 жыл бұрын
Дооо... Нарисуй-ка сериализацию в рамках тех знаний, которые уже даны. Жду.
@КритерийПарето2 жыл бұрын
О боже доллар 64
@XpucT2 жыл бұрын
@ГосподинАристократ3 жыл бұрын
Наткнулся на задачу: написать регулярное выражение, с помощью которого проверяется двоичное число на делимость на 3 в десятичном формате. Насколько это сложно?
@danilablagorodniy84652 жыл бұрын
релевантно ли это для Python?
@XpucT2 жыл бұрын
Да. Безусловно. Но чтобы погрузиться не столько в кодовую часть, как в сами Регулярные выражения в целом, чтобы это было универсально для любого языка, обязательно к просмотру это ➜ kzbin.info/www/bejne/b4nZZK18mN1_qNk
@danilablagorodniy84652 жыл бұрын
@@XpucT спасибо!
@levontsverianov26535 жыл бұрын
Привет Хачатур джан , вот написал маленькое веб приложение , на домашку ) залил на гид хаб думаю кому нибуть пригодится github.com/lyovjan/Projects
@XpucT5 жыл бұрын
Очень круто 👍 Пригодится, конечно, пусть учатся 👍
@DinaSolo133 жыл бұрын
@@XpucT Спасибо за программку! Пригодилась для хорошего примера! Только вот новое есть... да и вот почему protected, internal... Жаль уроков новых нету (
@ValeraKeyBrown2Channel11 ай бұрын
В стрингах код пишут только хтмл-программисты минутка тупого юмора
@XpucT11 ай бұрын
@ДімаМасюк-х6д3 жыл бұрын
5:44 можна не стерать точку а нажать ctrl+пробел
@zumwolfzum5 жыл бұрын
Привет. Подскажите пожалуйста почему ругается на label1? prntscr.com/nwlrza
@XpucT5 жыл бұрын
Привет 🖐 Когда наводишь мышь, какая там ошибка?
@zumwolfzum5 жыл бұрын
@@XpucT The name label1 does not exist in the current context
@XpucT5 жыл бұрын
@@zumwolfzum контрола label1 не существует. Ты наверно пропустила уроки, потому что в один прекрасный момент у нас в проекте всегда был есть и будет label Просто возьми Label из панели элементов и перенеси на форму.
@zumwolfzum5 жыл бұрын
@@XpucT спасибо. Так и сделаю
@leonbishop74044 жыл бұрын
А зачем вы используете виртуальную машину? Чтобы айпишник в черные списки не закинуло при парсинге или по другой причине?
@XpucT4 жыл бұрын
Нет, об этом говорил в Уроке 1. Довольно часто слетает либо какой-то модуль, либо обновление целиком. Нужна возможность быстрого отката. Быстрее, чем виртуалку сбросить на точку сохранения ничего нельзя. Собственное железо к тому же не требуется перезагружать.
@СержСерго-п6г5 жыл бұрын
Здоров Всем. Может кому пригодится нашёл сайт для быстрой Наглядной проверки регулярных выражений regex101.com/ в Test String пишите свой текст для проверки а в Regular Expression свое регулярное выражение и в поле Test String автоматом подсвечивается найденные совпадения. мне помогло
@olegudin-t4f Жыл бұрын
пацы, а как тут тащить? а то я не играл еще, вот хочу залететь попробовать
@MsMixej5 жыл бұрын
Урок мягко говоря, от начинающего для начинающего, полезной инфы минут.
@GoldbergCC4 жыл бұрын
Забыл сразу спросить, а про API будет видео? Хотя бы небольшое )) Только НЕ на примере ВК пожалуйста ))) а то уже тошнит от этого ВК
@andreymtrx83685 жыл бұрын
Привет! Такая проблема появилась, при загрузке разметки сайта в переменную вылетает ошибка 400 Bad Request. Сама ссылка рабочая, с браузера все замечательно открывается , уже на неделю завис проект xd. Может ты когда-то встречался с такой проблемой? В инете все советы оказались бесполезными. Вот ссылка - www.myscore.com.ua/match/df6IGWB9/#standings;over_under;overall;2.5
@XpucT5 жыл бұрын
Привет 🖐 Сервер с защитой. Нужно брать у них API отдельно, либо искать зеркало на сайт, либо клон.