RegEx в PHP: найти первую подходящую строку - PullRequest
3 голосов
/ 26 апреля 2010

Я хочу найти первую подходящую строку в очень очень длинном тексте. Я знаю, что могу использовать preg_grep () и взять первый элемент возвращаемого массива. Но это неэффективно, если мне нужно только первое совпадение (или я знаю, что заранее только одно совпадение). Любое предложение?

Ответы [ 2 ]

4 голосов
/ 26 апреля 2010

preg_match () ?

preg_match () возвращает количество раз шаблон соответствует. Это будет 0 раз (без совпадений) или 1 раз потому что preg_match () остановится поиск после первого матча. preg_match_all () наоборот будет продолжайте, пока не дойдет до конца предмет. preg_match () возвращает FALSE, если произошла ошибка.

1 голос
/ 06 октября 2016

Вот пример того, как вы можете это сделать:

$string = 'A01B1/00asdqwe';
$pattern = '~^[A-Z][0-9][0-9][A-Z][0-9]+~';

if (preg_match($pattern, $string, $match) ) {
  echo "We have matched: $match[0]\n";
} else {
  echo "Not matched\n";
}

Вы можете попробовать print_r($match), чтобы проверить структуру массива и проверить свое регулярное выражение.

Примечание по регулярному выражению:

  • Тильда ~ в регулярном выражении - это просто разделители, необходимые для переноса шаблон.
  • Знак ^ обозначает, что мы совпадаем с самого начала строки (необязательно)
  • Плюс + означает, что мы можем иметь один или больше целых чисел, которые следуют. (Так что A01B1 , A01B12 , A01B123 также будут быть сопоставленным.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...