регулярное выражение, чтобы получить мета ключевые слова - PullRequest
0 голосов
/ 14 сентября 2009

Привет, я надеялся, что кто-то может помочь мне с этим регулярным выражением.

Я хочу сопоставить приведенный ниже шаблон один раз, чтобы извлечь мета ключевые слова со страницы:

.match(/(<meta name=[\"|\']keywords([^\/>]*))/ig);

Любые идеи будут приветствоваться

Ответы [ 5 ]

4 голосов
/ 14 сентября 2009

Почему вы не можете использовать синтаксический анализатор DOM, а затем просто извлечь все метаэлементы, выполнить итерацию и сделать что хотите?

0 голосов
/ 31 августа 2011

<meta(?=[^>]*name\s*=\s*("|')\s*keywords\s*\1)\s+[^>]*content\s*=\s*("|')([^>\2]*?)\2

позволит вам извлечь содержимое мета-ключевых слов как третью группу (\ 3) более надежным способом:
- содержимое и имя могут быть выражены между 'или "
- порядок следования атрибутов не фиксирован
- могут присутствовать другие атрибуты

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

Надеюсь, это поможет!

0 голосов
/ 14 сентября 2009

Это не проверено, но с jquery вы не могли бы просто сделать:

$('meta').each(function() { // insert code here to put the attributes in an array or whatever });

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

0 голосов
/ 14 сентября 2009
<meta name="keywords" content="(.+)" />

Я могу ошибаться, но если это не жадность, это должно быть. просто избегайте специальных символов.

0 голосов
/ 14 сентября 2009

У меня нет конкретного ответа, но полезно ли это? Это то, что я использую при поиске и замене TextPad .

^<meta[^"]+"\([^"]*\)"[^"]*"\([^"]*\)"*.*

FIND:
^[^"]+"\([^"]*\)"[^"]*"\([^"]*\)"*.*
REPLACE:
<\1>\2</\1>

CHANGES:
<TITLE>Q10022</TITLE>
<META HTTP-EQUIV="CONTENT-Type" CONTENT="text/html; charset=iso-8859-1" />

TO:
<TITLE>Q10022</TITLE>
<CONTENT-Type>text/html; charset=iso-8859-1</CONTENT-Type>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...