Это не должно нуждаться в осложнениях, связанных с обходными решениями. Основная проблема с вашим попытанным решением - 0*
, который может соответствовать нулю 0
с до следующей группы 1
с.
0*(1(11)*0+)*(1(11)*)?
Это обрабатывает ведущие 0
с. Если вас это не беспокоит, вы можете удалить 0*
.
"Мясо" - это внутреннее выражение с 0+
. Нечетные группы 1
s, разделенные одним или несколькими 0
s.
Поскольку эти группы заканчиваются 0
, нам понадобится дополнительная нечетная группа 1
s в конце на случай, если строкаоканчивается на 1
.
Обратите внимание, что, поскольку все приведенные выше значения являются необязательными, приведенное выше решение также будет соответствовать пустой строкеЕсли вам нужен хотя бы один 1
, он немного сложнее:
0*1(11)*(0+1(11)*)*0*