Уже опубликованные решения с регулярными выражениями - \((.*?)\)и \(([^\)]+)\)- не возвращают самые внутренние строки между открытыми и закрытыми скобками. Если строка Text (abc(xyz 123)они и возвращают(abc(xyz 123) как весь матч, а не (xyz 123).
Шаблон, который соответствует подстрокам (используйте с preg_matchдля получения первой и preg_match_allдля выборки всех вхождений) в круглых скобках без других открытых и закрывающих круглых скобок между ними, если совпадение должно включать круглые скобки:
\([^()]*\)
Или вы хотите получить значения без скобок:
\(([^()]*)\)
\(\K[^()]*(?=\))
(?<=\()[^()]*(?=\))
Замените *на, +если между (и должен быть хотя бы 1 символ ).
Детали :
\( - открывающая круглая скобка (должна быть экранирована, чтобы обозначить буквальную круглую скобку, поскольку она используется вне класса символов)
[^()]*- ноль или больше символов , кроме (и )(обратите внимание , это (и )не должны быть экранированы внутри класса символов , как внутри него, (и )не может быть использован для указания группирования и рассматриваются в качестве буквальных скобках)
\) - закрывающая круглая скобка (должна быть экранирована, чтобы обозначить буквальную круглую скобку, поскольку она используется вне класса символов).
\(\KУчастие в альтернативных матчах регулярных выражений (и опускают от значения матча (с \Kоператором сброса матча). (?<=\()- это положительный просмотр назад, который требует, чтобы a (появлялся сразу слева от текущего местоположения, но (не добавляется к значению соответствия, поскольку шаблоны просмотра назад (lookaround) не используются. (?=\()- это положительный просмотр вперед, который требует, чтобы )символ появлялся сразу справа от текущего местоположения.
Код PHP :
$fullString = 'ignore everything except this (text) and (that (text here))';
if (preg_match_all('~\(([^()]*)\)~', $fullString, $matches)) {
print_r($matches[0]);
print_r($matches[1]);
}
Вывод:
Array ( [0] => (text) [1] => (text here) )
Array ( [0] => text [1] => text here )
s($fullString)->between("(", ")")полезные сведения, найденные в этой автономной библиотеке .