Богомол является великим и очень легким установить
, я использовал его в течение приблизительно 3 лет
, Он имеет следующие проблемы.
существует 2 предела Meg на размер файла, который можно сохранить обсуждаемый. Это становится проблемой, когда Вы хотите включать снимки экрана проблемы.
, Если два человека обновляют проблему одновременно - Кто-то потеряет данные
Возьмите рекомендацию Грега D начинать с (аа) * и продолжать оттуда. Sepp2k почти прав, но главное - вам наплевать на другую букву. Я имею в виду, что когда вы смотрите на ограничение «нечетное число a», вам совершенно безразлично, какие b находятся в вашей строке. Таким образом, вставьте b * где угодно:)
Ответ Sepp2k почти правильный, но этот правильный:
b* a b* (a b* a b* )* | a* b a* (b a* b a* )*
Чтобы уточнить, это регулярное выражение вычисляет все строки с нечетным числом a (первая часть), и ИЛИ те строки с любыми строками, содержащими нечетное количество b.
Это должно работать:
b* a b* (a b* a b*)* | a* b a* (b a* b a*)*
Я думаю, вам нужно подойти к проблеме иначе.
Вы пытаетесь сопоставить все, что не имеет четных чисел как a
, так и b
.
Вероятно, было бы проще начать с чего-то, что соответствует даже числам a
и b
. Все, что вам нужно сделать на этом этапе, - это добавить что-нибудь в конце, которое соответствует наименьшей строке, которую вы действительно хотите сопоставить.
Боюсь, я не верю, что написанное вами регулярное выражение является правильным. Рассмотрим строку:
aba
У нас есть пара вариантов совпадений, но тот факт, что она имеет нечетную длину, означает, что мы должны сопоставить одиночный a спереди, поэтому:
(a)(ba)
Но, к сожалению, это невозможно для вашей второй основной группы там для соответствия (ba).
Когда я имел дело с таким ограничением, я обнаружил, что легче начать с основного ограничения и двигаться оттуда. В этом случае ваше ограничение "нечетное", поэтому начните с
a(aa)*
, чтобы задать нечетное число a
, и продолжайте оттуда. :)