Есть ли способ описать регулярное выражение, разбивающее строку на наборы символов из ограниченного пула без дублирования? Например, у нас есть пул символов (A, B и C), поэтому строка «AABABCCAB» разбивается на «A», «AB», «ABC» и «CAB», обратите внимание, что порядок в наборах не имеет значения. .
Спасибо!
Похоже, что регулярное выражение должно содержать положительные и отрицательные прогнозы, но у меня с ними ничего не получилось(((
@CarySwoveland Правильно, в идеале пул должен быть назначаемым, то есть вы должны иметь возможность описать его с помощью шаблона. Как вы думаете, это осуществимо?
Пытаться:
([ABC])(?:(?!\1)([ABC])(?:(?!\1|\2)[ABC])?)?
См.: regex101
Объяснение
([ABC])
: сопоставьте A B или C и сохраните в группу 1.(?:...)?
: тогда необязательно
(?!\1)([ABC])
: сопоставьте другую букву ABC, отличную от буквы в группе 1, и сохраните ее в группе 2.(?:...)?
: и, возможно, совпадение
(?!\1|\2)[ABC]
: выпустить еще одну букву ABC, если она не из группы 1 или 2.Я вижу логику, поэтому мы постоянно исключаем найденные символы из следующего ввода, используя отрицательный просмотр, спасибо за объяснение!
Вы должны указать, всегда ли размер пула символов равен трем или чему-то еще.