Не подлежит удержанию!
^(?:(?:[a-z]+)|(?:\](?!\]))|(?:\[(?!\[)))+$
Я убрал только две или более вещи.Я удалил избыточные классы символов только для одного символа.Кажется, это проходит все тестовые случаи, о которых я могу думать.Любая строка символов, содержащая только один [
или ]
.
Дайте мне знать, если это работает для вас!
Я не уверен, что могу ответить на этот вопрос, ноЯ опубликую то, что у меня есть, по мере того, как я прохожу это.
Во-первых, у меня есть это, которое, кажется, соответствует без скобок.Это любая буква, за которой не следует 2 или более.
^(?:([a-z])(?!\1{2,}))+$
Мы можем добавить скобки в класс символов, и он начнет совпадать с скобками;но, очевидно, это также позволит им следовать тем же правилам, что и буквы (два вместе действительны).Как отделить поведение скобок от поведения букв?
^(?:([a-z\[\]])(?!\1{2,}))+$
Это выглядит грязно, но, похоже, работает.Глядя на другой ответ, мне это нравится намного лучше.Теперь, чтобы понять, почему я не подумал об этом.
^(?:(?:([a-z])(?!\1{2,}))|(?:[\]](?![\]]))|(?:[\[](?![\[])))+$
Кроме того, по какой-то причине я подумал, что это 1-2 символа, но только один из [
и ]
, так чтовсе равно ничего не стоит :).