Вы можете использовать шаблон [^][]+
( класс отрицательных символов ) для сопоставления 1 или более символов, отличных от [
и ]
:
\[(?<colors>[^][]+)](?<text>[^][]+)
См. Демоверсию regex . Обратите внимание, что в демонстрационной версии я добавил \n
к классам символов с отрицанием, поскольку тест выполняется на одной многострочной строке, если вы проверяете несколько отдельных автономных строк, вам это не нужно.
В некоторых движках регулярных выражений вы должны экранировать [
или ]
или оба внутри класса символов, как в Java, Ruby или Swift / Objective-C (библиотека Boost), поэтому используйте
\[(?<colors>[^\]\[]+)](?<text>[^\]\[]+)
Если группа text
может быть пустой, замените (?<text>[^\]\[]+)
на (?<text>[^\]\[]*)
, *
будет соответствовать 0 или более вхождениям.