Чтобы сопоставить подстроку между первым [
и последним ]
, вы можете использовать
\[.*\] # 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. Тем не менее, не жадный выглядит лучше.