Генерация регулярного выражения из языка - PullRequest
0 голосов
/ 21 февраля 2019

Мне нужно найти регулярное выражение для определения языка всех двоичных строк, содержащих не более 1 в каждой подстроке длины четыре .

Допустимая строка: 0001000100

Отклоненная строка: 100010100

Моя текущая попытка: ((0 *) (1) {0,1} (* 0)) {4} .Хотя для разных сайтов регулярных выражений это неправильно, что-то меня не удивляет, поскольку я новичок в регулярных выражениях.

Я считаю, что этот язык является регулярным, и поэтому меня просят найти регулярныйвыражение, чтобы определить его, а также и NFA и DFA, процесс для каждого я в порядке.Однако я изо всех сил пытаюсь придумать регулярное выражение, которое определяет язык.

1 Ответ

0 голосов
/ 21 февраля 2019

Это регулярное выражение, по-видимому, определяет нужный вам язык, где никакие две единицы не будут присутствовать в четырех символах,

^0*(?:10{3,})*1?0*$

Объяснение:

  • ^ - начало строки
  • 0* - один или несколько нулей
  • (?:10{3,})* - соответствует литералу 1, затем не менее трех или более нулей и всего нуляили более раз
  • 1?0* - необязательно следует за литералом 1 и затем нулями или более нулями
  • $ - конец строки

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...