Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
26 / 26 / 1
Регистрация: 16.01.2010
Сообщений: 59

Не определяются группы в регулярном выражении

14.08.2024, 11:29. Показов 358. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу помочь найти ошибку в Regex: группы pref2 и date2 не определяются.
VB.NET Скопировано
1
2
3
4
5
6
7
8
9
10
Dim str, p1, p2 As String
p1 = "BET"
p2 = "AND"
str = "BET 12 AUG 2010 AND 10 AUG 2024"
'Это частный случай, длина p1 и p2 м.б от 2 до 4 символов)
Dim reg = New Regex("((?<pref1>(" & p1 & "))\s)?(?<date1>(\d{0,2}\s\D{3}\s\d{1,4})|\d{1,4})\s?(?<pref2>(" & p2 & "))?\s?(?<date2>(\d{0,2}\s\D{3}\s\d{1,4})|\d{1,4})?")
Dim pref1 As String = reg.Match(str).Groups("pref1").Value
Dim date1 As String = reg.Match(str).Groups("date1").Value
Dim pref2 As String = reg.Match(str).Groups("pref2").Value 'нужно получить "AND"
Dim date2 As String = reg.Match(str).Groups("date2").Value 'нужно получить "10 AUG 2024"
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2024, 11:29
Ответы с готовыми решениями:

Замена именованной группы на другой текст в регулярном выражении
Всем привет. У меня есть регулярное выражение: \b(?&lt;symbol&gt;с)|(?&lt;symbol&gt;с)|(?&lt;symbol&gt;с)\b Я хочу заменить содержимое группы...

Разобраться в регулярном выражении
&quot;(?&lt;=&lt;img+?src=\&quot; )+&quot; вон оно я не могу понять что значит и \&quot; )+ ...

Проверка условия в регулярном выражении
есть строка текста &quot;\r\n:20: CRED\r\n:23:123400&quot; есть регулярное выр.: &quot;(\\r\\n:20: (?&lt;p20&gt;{4}))(?(если p20=CRED)(?&lt;p23&gt;{6}))&quot;...

6
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17898 / 13994 / 5345
Регистрация: 17.03.2014
Сообщений: 28,652
Записей в блоге: 1
14.08.2024, 11:54
Sergey_New, а где ошибка то? Запустил ваш код в LINQPad и получил верный результат, насколько я вижу
Миниатюры
Не определяются группы в регулярном выражении  
1
26 / 26 / 1
Регистрация: 16.01.2010
Сообщений: 59
14.08.2024, 13:17  [ТС]
Спасибо за тестирование! Значит у меня где-то в другом ошибка
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17898 / 13994 / 5345
Регистрация: 17.03.2014
Сообщений: 28,652
Записей в блоге: 1
14.08.2024, 13:41
Sergey_New, входная строка которую вы парсите выглядит так в примере или там что-то еще есть?

И еще только сейчас заметил что вы четыре раза вызываете Match. Зачем? Это же неэффективно.
0
26 / 26 / 1
Регистрация: 16.01.2010
Сообщений: 59
14.08.2024, 14:02  [ТС]
Нашел, где загвоздка.
В реальном коде значения следующие:
VB.NET Скопировано
1
2
p1 = "|ABT|AFT|BEF|BET|CAL|EST|FROM|TO"
p2 = "|AND|TO"
Что нужно поправить?
П.С.
Входная строка такая же как в примере.
А как лучше применить Match?

Добавлено через 17 минут
Так заработало:
VB.NET Скопировано
1
2
p1 = "ABT|AFT|BEF|BET|CAL|EST|FROM|TO"
p2 = "AND|TO"
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17898 / 13994 / 5345
Регистрация: 17.03.2014
Сообщений: 28,652
Записей в блоге: 1
14.08.2024, 14:03
Лучший ответ Сообщение было отмечено Sergey_New как решение

Решение

Цитата Сообщение от Sergey_New Посмотреть сообщение
Что нужно поправить?
Убрать | в начале.

Цитата Сообщение от Sergey_New Посмотреть сообщение
А как лучше применить Match?
Не верю что вы не знаете как вызвать метод, сохранить его результат в переменную и потом использовать эту переменную.
0
26 / 26 / 1
Регистрация: 16.01.2010
Сообщений: 59
14.08.2024, 14:14  [ТС]
OwenGlendower,
Я вернулся к VB.NET после десятка лет после последнего его использования. Увы, многое забыл, т.к. увлекся мобильными приложениями на B4X .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.08.2024, 14:14
Помогаю со студенческими работами здесь

Catastrophic Backtracking в регулярном выражении
При написании небольшого парсера поисковой системы возникал проблема с регулярным выражением: Есть регулярное выражение для парсинга...

Несколько подстрок в регулярном выражении
Подскажите ,пожалуйста , а то никак не могу найти как задать в паттерне для регулярного выражения несколько подстрок и поиск этих подстрок...

Full match в регулярном выражении
Доброго времени суток! Столкнулся с проблемой в Regex: Есть строка &quot;наименование оказанной услуги&quot; и регулярка...

Проверка на регистр в регулярном выражении
Имеется форма в которой richTextBox и Button при нажатии на Button создается массив string keywords = { &quot;INSERT&quot;,...

Тире и дефис в регулярном выражении
Приветствую! Задача: Найти в строке определенные &quot;недопустимые&quot; символы, которые не входят в список допустимых. Допустимые это: буквы,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер