2015-09-28 4 views
4

В настоящее время я пытаюсь попасть в регулярные выражения для школы и должен работать на задаче, чтобы сократить это регулярное выражение:мне нужна помощь укорочения это регулярное выражение

r = 0(e + 0 + 1)* + (e + 1)(1 + 0)* + e 

с й существом пустым слова эпсилоном.

До сих пор я получил это:

r = 0(0 + 1)* + 1(1 + 0)* + e 

с учетом правила

r* = (e + r)* 

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

Полезные советы?

Edit:

Я думаю, что я получил еще один шаг вперед, формируя г к

r = 0(1 + 0)* + 1(1 + 0)* + e 

, а затем быть в состоянии объединить его

r = (0 + 1)(0 + 1)* + e 

Является ли это правильно?

Кроме того, мы могли бы сказать,

r = (0+1)* 

, который должен быть окончательный вид

+1

Знак «+» означает «или» в каждом случае, не так ли? Ваш язык состоит из строк 1 и 0? – DaaaahWhoosh

+0

Да в обоих случаях – Sossenbinder

+1

Ваш ответ кажется правильным :) –

ответ

1

Я бы сказал, что ваш собственный вычет является правильным за исключением одной вещи. Берем оригинальный

r = 0(e + 0 + 1)* + (e + 1)(1 + 0)* + e 

извлекая е, который в соответствии с вами пуста, листья

r = 0(0 + 1)* + 1(1 + 0)* 

или простыми словами 0 followed by any number of 0 or 1или1 followed by any number of 1 or 0. Итак, левая сторона заявляет, что должно быть хотя бы 0, а справа - 1. Это означает, что должно быть не менее 0 или 1. Теперь, ваш вкус регулярных выражений является один я никогда не видел, так что я не знаю, как выразить one or more в своем аромате (это обычно +), так что я буду выражать его в регулярно регулярного выражения, которое было бы

r = [01]+ 

который просто означает at least one0 or 1 repeated any number of times.

С уважением.

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