Действительно ли возможно упростить это регулярное выражение дальше?

Богомол является великим и очень легким установить

, я использовал его в течение приблизительно 3 лет

, Он имеет следующие проблемы.

существует 2 предела Meg на размер файла, который можно сохранить обсуждаемый. Это становится проблемой, когда Вы хотите включать снимки экрана проблемы.

, Если два человека обновляют проблему одновременно - Кто-то потеряет данные

6
задан Bill the Lizard 19 September 2012 в 01:52
поделиться

4 ответа

Возьмите рекомендацию Грега D начинать с (аа) * и продолжать оттуда. Sepp2k почти прав, но главное - вам наплевать на другую букву. Я имею в виду, что когда вы смотрите на ограничение «нечетное число a», вам совершенно безразлично, какие b находятся в вашей строке. Таким образом, вставьте b * где угодно:)

Ответ Sepp2k почти правильный, но этот правильный:

b* a b* (a b* a b* )* | a* b a* (b a* b a* )*

Чтобы уточнить, это регулярное выражение вычисляет все строки с нечетным числом a (первая часть), и ИЛИ те строки с любыми строками, содержащими нечетное количество b.

8
ответ дан 8 December 2019 в 16:06
поделиться

Это должно работать:

b* a b* (a b* a b*)* |  a* b a* (b a* b a*)*
5
ответ дан 8 December 2019 в 16:06
поделиться

Я думаю, вам нужно подойти к проблеме иначе.

Вы пытаетесь сопоставить все, что не имеет четных чисел как a , так и b .

Вероятно, было бы проще начать с чего-то, что соответствует даже числам a и b . Все, что вам нужно сделать на этом этапе, - это добавить что-нибудь в конце, которое соответствует наименьшей строке, которую вы действительно хотите сопоставить.

0
ответ дан 8 December 2019 в 16:06
поделиться

Боюсь, я не верю, что написанное вами регулярное выражение является правильным. Рассмотрим строку:

aba

У нас есть пара вариантов совпадений, но тот факт, что она имеет нечетную длину, означает, что мы должны сопоставить одиночный a спереди, поэтому:

(a)(ba)

Но, к сожалению, это невозможно для вашей второй основной группы там для соответствия (ba).

Когда я имел дело с таким ограничением, я обнаружил, что легче начать с основного ограничения и двигаться оттуда. В этом случае ваше ограничение "нечетное", поэтому начните с

a(aa)*

, чтобы задать нечетное число a , и продолжайте оттуда. :)

2
ответ дан 8 December 2019 в 16:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: