Забрать текст из последних скобок в строке с помощью регулярных выражений

207
15 февраля 2019, 02:30

Есть строка: Сочи (Адлер) (Россия), из которой мне нужно изъять текст, который находится в последих скобках. То есть, текст Россия. Для этого я написал регулярное выражение:

preg_match('/\((.*?)\)$/', ...);

Но оно почему-то выводит мне такие матчи:

array(2) {
  [0]=>
  string(27) "(Адлер) (Россия)"
  [1]=>
  string(25) "Адлер) (Россия"
}

Но почему? Ведь я поставил в конце $, что означает конец строки.

Answer 1

Подправьте шаблон, чтоб он искал НЕ скобки в конце строки:

$str = 'Сочи (Адлер) (Россия)';
preg_match('~\(([^()]+)\)$~', $str, $arr);
var_dump($arr);

Результат:

array (size=2)
  0 => string '(Россия)' (length=14)
  1 => string 'Россия' (length=12)
Answer 2
preg_match('/\(([^)]*)\)[^(]*$/', 'Сочи (Адлер) (Россия)', $match);
print_r($match);

Результат:

Array
(
    [0] => (Россия)
    [1] => Россия
)
Answer 3
$re = '/(?!.*\()[а-я]+/iu';
$str = 'Сочи (Адлер) (Россия)';
preg_match($re, $str, $matches);
var_dump($matches);
array(1) {
  [0]=>
  string(12) "Россия"
}

Тест

READ ALSO
Проблема с вывод подменю в рубриках WP

Проблема с вывод подменю в рубриках WP

Есть вот такой пример меню

157
Дата в нужном формате

Дата в нужном формате

Как вывести дату в таком формате: 14th October, 2018, есть такой код:

250