Регулярное выражение для обнаружения определенного запроса - PullRequest
2 голосов
/ 26 декабря 2008

Интересно, может ли кто-нибудь создать регулярное выражение, которое может определить, ищет ли человек что-то вроде "site: cnn.com" или "site: www.globe.com.ph/" У меня были самые трудные времена, чтобы понять это. Большое спасибо заранее!

Редактировать: Извините, забыл упомянуть, что мой скрипт на PHP.

Ответы [ 4 ]

1 голос
/ 26 декабря 2008

Хорошо, для ввода в произвольное текстовое поле будет работать что-то простое, как показано ниже:

\bsite:(\S+)

где круглые скобки будут захватывать любой сайт / домен, который они пытаются найти. Он не будет подтвержден как действительный, но проверка URL-адресов / доменов является сложной, и для этого существует множество легко поддающихся поиску регулярных выражений, например, есть один здесь .

0 голосов
/ 26 декабря 2008

нет, это не для URL реферера. Мой php-скрипт в основном выкладывает информацию о домене (например, обратные ссылки, pagerank и т. Д.), И мне нужно это регулярное выражение, чтобы он знал, что ищет пользователь. Если пользователь вводит что-то, что не соответствует регулярному выражению, он вместо этого выполняет обычный веб-поиск.

0 голосов
/ 26 декабря 2008

Если это все, что вы пытаетесь сделать, я думаю, я бы выбрал более простой подход и просто сделал бы:

$entry = $_REQUEST['q'];
$tokens = split(':', trim($entry));
if (1 < count($tokens) && strtolower($tokens[0]) == 'site')
  $site = $tokens[1];
0 голосов
/ 26 декабря 2008

С чем вы подходите? URL реферера?

Предполагается, что вы соответствуете URL-адресу реферера, который выглядит следующим образом:

http://www.google.com/search?client=safari&rls=en-us&q=whatever+site:foo.com&ie=UTF-8&oe=UTF-8

Регулярное выражение, подобное этому, должно сработать:

\bsite(?:\:|%3[aA])(?:(?!(?:%20|\+|&|$)).)+

Примечания:

  • Двоеточие после 'site' может быть не закодировано или может быть закодировано в процентах. Большинство пользовательских агентов оставляют его незакодированным (что, я считаю, на самом деле противоречит стандарту), но это будет обрабатывать оба
  • Я предполагал, что сайт: ... url будет ограничен по праву эквивалентом пробела, конца поля (&) или конца строки ($)
  • Я не принимал кодировку x-www-form-urlencoded (пробелы == '+') или пробелы, закодированные в процентах (пробел ==% 20). Это будет обрабатывать как
  • (?: ...) - это группа без захвата. (?! ...) - негативный взгляд.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...