Чтобы сопоставить подстроку между первым [ и последним ] , вы можете использовать
\[.*\] # Including open/close brackets
\[(.*)\] # Excluding open/close brackets (using a capturing group)
(?<=\[).*(?=\]) # Excluding open/close brackets (using lookarounds)
Посмотрите демонстрацию регулярных выражений и демонстрацию регулярных выражений # 2 .
Используйте следующие выражения для сопоставления строк в ближайших квадратных скобках :
Включая скобки:
\[[^][]*]- PCRE, Python re/ regex, .NET, Golang, POSIX (grep, sed, bash)
\[[^\][]*]- ECMAScript (JavaScript, C ++ std::regex, VBA RegExp)
\[[^\]\[]*] - Java регулярное выражение
\[[^\]\[]*\] - Onigmo (Ruby, требует экранирования скобок везде)
Исключая скобки:
(?<=\[)[^][]*(?=])- PCRE, Python re/ regex, .NET (C # и т. Д.), ICU (R stringr), JGSoft Software
\[([^][]*)]- Bash , Golang - захватить содержимое между квадратными скобками с парой неэкранированных скобок, также смотрите ниже
\[([^\][]*)]- JavaScript , C ++std::regex , VBARegExp
(?<=\[)[^\]\[]*(?=]) - Java регулярное выражение
(?<=\[)[^\]\[]*(?=\]) - Onigmo (Ruby, требует экранирования скобок везде)
ПРИМЕЧАНИЕ : *соответствует 0 или более символам, используйте +для соответствия 1 или более, чтобы избежать совпадений с пустой строкой в результирующем списке / массиве.
Всякий раз, когда доступны обе альтернативные поддержки, вышеупомянутые решения полагаются на них, чтобы исключить начальную / конечную скобку открытия / закрытия. В противном случае полагайтесь на группы захвата (предоставлены ссылки на наиболее распространенные решения на некоторых языках).
Если вам нужно сопоставить вложенные скобки , вы можете увидеть решения в регулярном выражении для соответствия потоку сбалансированных скобок и заменить круглые скобки квадратными, чтобы получить необходимую функциональность. Вы должны использовать группы захвата для доступа к содержимому, за исключением скобок открытия / закрытия:
[^]]быстрее, чем non-greedy (?), а также работает с разновидностями regex, которые не поддерживают non-greedy. Тем не менее, не жадный выглядит лучше.