Я читаю через dragon book и пытаюсь решить упражнение, которое формулируется следующим образомРегулярное выражение для строки цифр без повторных цифр?
Написать регулярные определения для следующих языков:
- Всех строк цифр без каких-либо повторяющихся цифр. Подсказка: Попробуйте эту проблему сначала с помощью нескольких цифр, например {0, 1, 2}.
Несмотря на то, пытались решить в течение нескольких часов, я не могу представить себе решение, рядом с очень многословной
d0 -> 0?
d1 -> 1?
d2 -> 2?
d3 -> 3?
d4 -> 4?
d5 -> 5?
d6 -> 6?
d7 -> 7?
d8 -> 8?
d9 -> 9?
d10 -> d0d1d2d3d4d5d6d7d8d9 | d0d1d2d3d4d5d6d7d9d8 | ...
Следовательно, чтобы писать 10!
альтернативы в d10
. Поскольку мы будем написать это регулярное определение, я сомневаюсь, что это правильное решение. Не могли бы вы мне помочь?
Дискуссия по аналогичному вопросу находится по адресу: http://www.perlmonks.org/?node_id=353072 –
Возможно, использование обратных вызовов поможет? –
Может быть, автор пытается показать вам, что регулярное выражение не всегда является самым компактным представлением? Конечный автомат для этого будет довольно компактным. Довольно легко показать, что это обычный язык, но это не значит, что оно имеет короткое представление как регулярное выражение ... Как отмечают другие, если оператор дополнения допускает изменения вещей. В Википедии есть хорошая дискуссия в разделе «Регулярное выражение». –