Совпадение числа в скобках в регулярном выражении - PullRequest
0 голосов
/ 28 августа 2010

У меня есть текст, который может включать слова, цифры и т. Д. Все, что мне нужно, это сопоставлять числа в квадратных скобках, но без сопоставления их так:

Lorem 43 ipsum dolor 1 sit amet (355) некоторые другой текст.

Я хочу сопоставить число 355, но поскольку есть числа без скобок, я получаю следующее:

\(\b\d+\b\) - 1st variant
\(.+?\)     - 2nd variant

Предположительно, я получаю (355), но мой php-скрипт уже находится под большой нагрузкой, сопоставление с удалением скобок не вариант.

Ответы [ 2 ]

3 голосов
/ 28 августа 2010

Если хотите, вы можете удалить \b в первом;они ничего не больно, но они избыточны.Чтобы захватить число и исключить скобки, используйте неэкранированные скобки вокруг цифр:

\((\d+)\)

. Эти цифры будут записаны для последующего использования.Например:

preg_match('/\((\d+)\)/', $sentence, $matches);
var_dump($matches[1]);
0 голосов
/ 28 августа 2010

Просто сравните, как ваш 1-й вариант, но запишите только цифры в группе, как это

\((\d+)\)

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

preg_match('/\((?<MatchedNumber>\d+)\)/', $searchText, $groups);
print_r($groups['MatchedNumber']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...