Как получить число, заключенное в скобки из строки?

У меня есть этот код

$string = "23 asdasdasdasd.sma(33) asda sdas asd 23 2 3 54232 23d asd";

$reg = "??";
preg_match($reg, $string, $matches);
var_dump($matches);

Я хочу получить этот номер: 33,

0

Решение

Потому что ты звонишь preg_match() в вашем коде и в ваших входных данных доступен только один целевой номер, вы можете точно использовать этот самый быстрый / краткий шаблон:

~\(\K\d+~ (Образец Демо) (5 шагов & нет групп захвата & не бдительно)

Разбивка паттернов:

~        #pattern delimiter
\(       #match (
\K       #restart the fullstring match (forget previously matched characters)
\d+      #match one or more digits greedily
~        #pattern delimiter

* чтобы быть ясным, я хочу заявить, что мой шаблон предполагает, что число, которое следует сразу за ( Будет сопровождаться ), Это то, что обеспечивает пример ввода.

Если ) Для обеспечения точности необходимо найти соответствие, тогда группа захвата (путь Тима) будет следующим наиболее эффективным способом. Все правильные шаблоны, которые используют обходные пути, будут медленнее, чем правильные шаблоны без.

0

Другие решения

Я считаю, что регулярное выражение должно быть таким

$reg = "\(([0-9]+)\)";
0

Попробуйте использовать шаблон \((\d+)\):

preg_match("/\((\d+)\)/", $string, $matches);

демонстрация

Первая группа захвата будет содержать число, заключенное в скобки.

0

Вы также можете использовать \(\K\d+(?=\))

Это будет соответствовать:

\(     # Матч (
\ K # Сброс начальной точки сообщенного совпадения
\ d + # Совпадение с одной или несколькими цифрами
(? = \)) # Позитивный взгляд, который утверждает, что следует)
$reg = '/\(\K\d+(?=\))/';

Номер будет в $matches[0];

Php демо

0
По вопросам рекламы [email protected]