0 / 0 / 0
Регистрация: 25.09.2018
Сообщений: 4
1

Генерация строк на основе шаблона регулярного выражения

25.09.2018, 09:46. Показов 2494. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Есть проблемка с тем как на основе шаблона генерировать все возможные варианты строк. Шаблон строки задается в виде шаблон регулярного выражения с использованием метасимволов. Методы класса Regex позволяют только проверять строку на соответствие шаблона, а мне надо сгенерить все возможные строки по шаблону. В документации не нашел ничего подобного.
Например есть шаблон: "Дело №[1-5]. Том №1[1-10]", необходимо сгенерировать строки:
Дело №1. Том №11
Дело №1. Том №12
...
Дело №2. Том №11
Дело №2. Том №12
...
Дело №5. Том №110
Просьба подсказать как решать такую задачу.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2018, 09:46
Ответы с готовыми решениями:

Объяснение шаблона регулярного выражения
Здравствуйте! Помогите, пожалуйста, у меня есть регулярное выражение, которое нашла здесь же на...

Доработка шаблона регулярного выражения
Здравствуйте! Пытаюсь написать шаблон для получения из значений типа: Ф-2-448-Н.КАЗАНИЩЕ...

Генерация слов с помщью регулярного выражения
День добрый, есть задание: Написать программу которая составляет все возможные слова длины n из...

Поиск строк с датами с использованием регулярного выражения и выделение этих дат из найденных строк
Как можно вывести только дату? Например в внутри файла сертификата (cer/crt) содержат строки: ...

7
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
25.09.2018, 10:36 2
Цитата Сообщение от sapsan2 Посмотреть сообщение
Шаблон строки задается в виде шаблон регулярного выражения
вы же в курсе что под
Цитата Сообщение от sapsan2 Посмотреть сообщение
Дело №[1-5]. Том №1[1-10]
попадают только 2 из 5 строк примера

Цитата Сообщение от sapsan2 Посмотреть сообщение
Просьба подсказать как решать такую задачу.
не регулярками
0
0 / 0 / 0
Регистрация: 25.09.2018
Сообщений: 4
25.09.2018, 11:05  [ТС] 3
Почему это под этот шаблон попадают только 2 строки из 5?
Есть ли способ вообще перебора вариантов для автоматической генерации подстрок интервала чисел [1-10] или букв [a-z]?
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
25.09.2018, 11:13 4
Цитата Сообщение от sapsan2 Посмотреть сообщение
Почему это под этот шаблон попадают только 2 строки из 5?
потому что точка это вовсе не точка, а [1-10] это всего лишь один символ 0 или 1.
любой онлайн тесте покажет и объяснит
Цитата Сообщение от sapsan2 Посмотреть сообщение
Есть ли способ вообще перебора вариантов для автоматической генерации подстрок интервала чисел [1-10] или букв [a-z]?
цикл for
0
0 / 0 / 0
Регистрация: 25.09.2018
Сообщений: 4
25.09.2018, 11:16  [ТС] 5
Может я не так сформулировал, но мне надо чтобы были числа 1,2,3-10, все варианты, которые возможны в диапазоне от 1 до 10. Неужели нет высокоуровневого инструмента который генерит подстроки?
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
25.09.2018, 11:29 6
Цитата Сообщение от sapsan2 Посмотреть сообщение
Может я не так сформулировал
вы переформулировали "изначальное условие задачи" на "решение задачи вашим (неподходящим) способом".
Просто в след раз пишите что надо изначально (и в названии темы тоже) и уже отдельно как пробовали решать.

вот пример задания [0-255] по вашей системе с помощью регулярок \b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b Уверен вы не это искали
Цитата Сообщение от sapsan2 Посмотреть сообщение
все варианты, которые возможны в диапазоне от 1 до 10
пока непонятно чем for не угодил
Цитата Сообщение от sapsan2 Посмотреть сообщение
Неужели нет высокоуровневого инструмента который генерит подстроки?
есть, надо лишь понять что вам изначально нужно и выбрать инструмент
0
0 / 0 / 0
Регистрация: 25.09.2018
Сообщений: 4
25.09.2018, 13:58  [ТС] 7
Найти в строке символы скобок, определить какие цифры между ними написаны и прогнать цикл по этим значениям можно, но это не эффективно. Все это будет работать только для конкретного шаблона с конкретными символами. И потом тут меняются две подстроки, то есть надо будет все это вызвать 2 раза. Если понадобиться поменять шаблон и там будут не цифры, а буквы, то то тогда придется полностью переделывать алгоритм. Хотелось бы задать выражение с интервалами (вида [1-10]) и получить массив строк по этому шаблону стандартными средствами .Net. Может есть какая-то библиотека для работы с регулярными выражениями,которая все это уже умеет, только я про нее не знаю.
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
25.09.2018, 14:32 8
Цитата Сообщение от sapsan2 Посмотреть сообщение
Если понадобиться поменять шаблон и там будут не цифры, а буквы, то то тогда придется полностью переделывать алгоритм
это если плохой алгоритм напишите, просто перебирать числа или символы в квадратных скобках пишется за 10 минут и может работать с любым количеством этих перчислений (т.е. с шаблоном от пользователя)
Цитата Сообщение от sapsan2 Посмотреть сообщение
вида [1-10]
это НЕ регулярка, вряд ли такое есть в net
Цитата Сообщение от sapsan2 Посмотреть сообщение
Может есть какая-то библиотека для работы с регулярными выражениями
например https://github.com/moodmosaic/Fare
для питона еще неплохие вроде были
Цитата Сообщение от sapsan2 Посмотреть сообщение
только я про нее не знаю
есть ощущения что вы и сами регулярки пока сами не знаете. Я к тому что можете долго копать под них а потом окажется что не подходит совсем.
0
25.09.2018, 14:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2018, 14:32
Помогаю со студенческими работами здесь

Как с использованием регулярного выражения запретить ввод неправильных строк на виджете?
Как с помощью регулярного выражения запретить ввод неправильных строк на виджете? Например, я...

Составление регулярного выражения
Ещё не работал с regex в с++. Есть файл типа: <city id="94610" region="21770" head="0"...

Составление регулярного выражения
Привет. Есть теги {group=8}Какой то текст{/group} Они разумеется в tpl файле который достаётся...

Составление регулярного выражения
Всем привет. Второй день бьюсь с регуляркой, уже бесить начинает. Есть HMTL в нем нужно найти кусок...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru