0 / 0 / 0
Регистрация: 25.09.2018
Сообщений: 4
|
|
1 | |
Генерация строк на основе шаблона регулярного выражения25.09.2018, 09:46. Показов 2494. Ответов 7
Метки нет (Все метки)
Доброго времени суток. Есть проблемка с тем как на основе шаблона генерировать все возможные варианты строк. Шаблон строки задается в виде шаблон регулярного выражения с использованием метасимволов. Методы класса Regex позволяют только проверять строку на соответствие шаблона, а мне надо сгенерить все возможные строки по шаблону. В документации не нашел ничего подобного.
Например есть шаблон: "Дело №[1-5]. Том №1[1-10]", необходимо сгенерировать строки: Дело №1. Том №11 Дело №1. Том №12 ... Дело №2. Том №11 Дело №2. Том №12 ... Дело №5. Том №110 Просьба подсказать как решать такую задачу.
0
|
25.09.2018, 09:46 | |
Ответы с готовыми решениями:
7
Объяснение шаблона регулярного выражения Доработка шаблона регулярного выражения Генерация слов с помщью регулярного выражения Поиск строк с датами с использованием регулярного выражения и выделение этих дат из найденных строк |
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|
25.09.2018, 10:36 | 2 |
вы же в курсе что под
попадают только 2 из 5 строк примера
не регулярками
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 |
потому что точка это вовсе не точка, а [1-10] это всего лишь один символ 0 или 1.
любой онлайн тесте покажет и объяснит цикл 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 |
вы переформулировали "изначальное условие задачи" на "решение задачи вашим (неподходящим) способом".
Просто в след раз пишите что надо изначально (и в названии темы тоже) и уже отдельно как пробовали решать. вот пример задания [0-255] по вашей системе с помощью регулярок \b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b Уверен вы не это искалипока непонятно чем for не угодил есть, надо лишь понять что вам изначально нужно и выбрать инструмент
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 |
это если плохой алгоритм напишите, просто перебирать числа или символы в квадратных скобках пишется за 10 минут и может работать с любым количеством этих перчислений (т.е. с шаблоном от пользователя)
это НЕ регулярка, вряд ли такое есть в net например https://github.com/moodmosaic/Fare для питона еще неплохие вроде были есть ощущения что вы и сами регулярки пока сами не знаете. Я к тому что можете долго копать под них а потом окажется что не подходит совсем.
0
|
25.09.2018, 14:32 | |
25.09.2018, 14:32 | |
Помогаю со студенческими работами здесь
8
Как с использованием регулярного выражения запретить ввод неправильных строк на виджете? Составление регулярного выражения Составление регулярного выражения Составление регулярного выражения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |