Регулярное выражение: как удалить все, кроме другого регулярного выражения? - PullRequest
0 голосов
/ 02 апреля 2009

У меня есть некоторое регулярное выражение (например, ^ \ w + [\ w -.] \ @ \ w + ((- \ w +) | (\ w )). [Az] {2,3} $ , чтобы соответствовать правильным адресам электронной почты), но я не могу понять, как удалить все, что не соответствует регулярному выражению в моей строке.

Сохраняя пример электронной почты, мне нужен способ, учитывая жало, как

$myString = "This is some text, the email is here example@example.com, and other things over here";

мне нужно вернуть просто «example@example.com» или логическое значение false, если в строках нет электронного письма.

Конечно, электронная почта является лишь примером, в некоторых других случаях мне нужно будет удалить все, кроме целых / плавающих чисел и т. Д. *

Я так много гуглял, но ничего не нашел.

Ответы [ 3 ]

4 голосов
/ 02 апреля 2009

Если вы окружите свое регулярное выражение в скобках и используете preg_match или preg_match_all, он вернет только ту часть строки, которая соответствует регулярному выражению:

$myString = "This is some text, the email is here example@example.com, and other things over here";
preg_match("/(\w+[\w-.]\@\w+((-\w+)|(\w)).[a-z]{2,3})/", $myString, $matches);
print_r($matches);

Примечание. Я также снял начало и конец разделителей строк, так как в этом случае они не нужны.

1 голос
/ 02 апреля 2009

Используйте функцию preg_match_all для сопоставления всех вхождений. Функция preg_match_all сама возвращает количество совпадений или false , если произошла ошибка.

Итак:

$myString = "This is some text, the email is here example@example.com, and other things over here";
if (($num = preg_match_all('/\w+[\w-.]\@\w+((-\w+)|(\w)).[a-z]{2,3}/', $myString, $matches)) !== false) {
    echo $num.' matches have been found.';
    var_dump($matches);
} else {
    // error
}
0 голосов
/ 21 ноября 2010

Для работы вашего регулярного выражения необходимо удалить $ и ^, эти символы не могут быть найдены в середине строки. Если ваше регулярное выражение совпадает, оно не может содержать ничего, кроме электронной почты.

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