2011-01-05 4 views
3

Я ищу способ отображения всех возможных шаблонов из конечного регулярного выражения (без дубликатов). Есть ли доступный источник?Список всех шаблонов, которые соответствует регулярному выражению

+0

@Artha Есть ли у вас языки? – marcog

+0

Можете ли вы привести пример ввода и ожидаемого вывода? – Gumbo

+0

Вы имеете в виду все возможные совпадения из регулярного выражения? –

ответ

3

Хотя он не будет охватывать некоторые дополнительные функции и имеет свою долю других предостережений, Regexp::Genex, кажется, находится близко к тому, что вы ищете.

Существует также this thread of PerlMonks, что является достаточно актуальным (а также объясняет, как Regexp :: Genex может не сделать для вас и некоторые альтернативы для рулона).

В противном случае, согласно Jeffrey Friedl-х Mastering Regular Expressions, вы можете использовать/г модификатора, в сочетании с расширением и pattern that will never match, ала ({CODE}?):

perl -E '$_ = 'Mastering Regular Expressions'; /(\p{L}*)(?{ say qq![$^N]! })(?!)/g;' 
+0

Regexp :: Genex отлично работает для меня. Спасибо – Artha

+0

Есть ли какой-либо полностью разработанный код - Regex :: Genex был альфа и не поддерживает^$ \ G ... – Artha

+0

Не то, что я знаю, к сожалению - Может быть, комбинация этого примера из Mastering Regular Expressions (если вы действительно, он действительно нужен, вы даже можете использовать $ & и друзей вместо захвата групп. Я не знаю, когда $^{MATCH} работает внутри блоков (? {CODE}) плюс String :: Random может сделать трюк? – Hugmeir

0

Программа A Haskell, основанный на в Perl Regexp::Genex можно найти on Github и on Hackage.

According to the author, он был вдохновлен Regexp :: Genex, но «использует метод случайной ходьбы для классов символов, вместо перечисления всех возможностей».

Смежные вопросы