Как использовать регулярные выражения для извлечения термина между квадратными скобками в PHP? - PullRequest
0 голосов
/ 12 февраля 2010

У меня есть что-то вроде:

$ string1 = "пес лиса [кошка]"

Мне нужно содержимое внутри [], т.е. кошка

другой вопрос: если вы знакомы с регулярным выражением на одном языке, подойдет ли оно и для других языков?

Ответы [ 2 ]

6 голосов
/ 12 февраля 2010
$matches = array();
$matchcount = preg_match('/\[([^\]]*)\]/', $string1, $matches);
$item_inside_brackets = $matches[1];

Если вы хотите сопоставить несколько терминов в квадратных скобках в одной строке, вам нужно рассмотреть preg_match_all вместо просто preg_match.

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

Объяснение вышеприведенного регулярного выражения:

/            # beginning of regex delimiter
\[           # literal left bracket (normally [ is a special character)
(            # start capture group - isolate the text we actually want to extract
[^\]]*       # match any number of non-] characters
)            # end capture group
\]           # literal right bracket
/            # end of regex delimiter

Содержимое массива $matches устанавливается на основе как всей совокупности текста (который будет включать в себя скобки) в [0], так и затем содержимого каждой группы захвата из сопоставления в [1] и up (содержимое первой группы захвата в [1], второе в [2] и т. д.).

0 голосов
/ 12 февраля 2010

Вот код php:

preg_match('/\[(.*)\]/', $string1, $matches);
echo $matches[1];

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...