LINUX.ORG.RU

Возможно ли такое?

 


0

1

Я вот что подумал. Допустим, у нас есть некая функция, формы

replace(re1, re2)
которая генерирует по первому регулярному выражению множество возможных строк, сответствующих re1 (с ограничением по длине), а затем фильтрует их по второму регулярному выражению, и возвращает множество значений. Возможно ли такое?

Мне кажется, это может служить основой AMB-вычислителя, между прочим. Интересная идея.

P.S. Я вот что подумал. Если у нас будет amb вычислитель, и нам нужна лишь одна (или несколько) строка из множества значений, можно реализовать нечто вроде пайпа, при этом, нам не надо генерировать все возможные выражения, будет достаточно того, сколько запрашивается в конкретный момент, а далее вычисление (и генерация) прерывается. Это позволит сэкономить производительность в большинстве случаев.



Последнее исправление: terminator-101 (всего исправлений: 3)

Конечно, можно. Надо найти все соответствия в исходной строке, а потом проверить каждое соответствие на эм... соответствие второму выражению.

proud_anon ★★★★★
()

генерирует по первому ргулярному врыражению множество возможных строк, сответствующих re1

LOL

0?(10)*1?00(10)*1?

i-rinat ★★★★★
()
Ответ на: комментарий от terminator-101

не, там не строка первая, а регексп. Сначала надо сгенерить.

Ну хорошо. Надо, чтобы матчер строк проверял их на соответствие сначала одному выражению, потом второму.

Как в общем случае получить наикратчайшее регулярное выражение re3 = re1 ∩ re2, я либо не знаю, либо не помню, увы. Кроме как если в синтаксисе есть look-around.

«Всё множество соответствующих строк» сгенерировать нельзя, оно может быть бесконечным.

proud_anon ★★★★★
()

которая генерирует по первому ргулярному врыражению множество возможных строк

А если множество бесконечное? Как тогда?

invy ★★★★★
()
Ответ на: комментарий от invy

Тогда лажа:). Надо подправить, чтоб не вводить в заблуждение. на самом деле, я думаю, если есть ограничение по длине, множество не может быть бесконечным, так?

terminator-101
() автор топика
Ответ на: комментарий от terminator-101

если есть ограничение по длине, множество не может быть бесконечным, так?

Сделай цикл по всем UUID. Как закончится — позови :)

i-rinat ★★★★★
()

Возможно ли такое?

Иерархия Хомского? Нет, не слышал!

Macil ★★★★★
()

которая генерирует по первому регулярному выражению множество возможных строк

упоролся? Ну сгенерь мне /.*/

emulek
()
Ответ на: комментарий от terminator-101

Ну, с ограничением по длине, само-сабой.

сгенерь мне все /.*/ длинной 12 символов.

emulek
()
Ответ на: комментарий от terminator-101

если есть ограничение по длине, множество не может быть бесконечным, так?

так. Но оно может быть ОЧЕНЬ большим. Например /.*/ в 12 символов с алфавитом в 96 символов будет 612`709`757`329`767`363`772`416

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.