正则表达式获取元关键字

时间:2009-09-13 22:20:32

标签: regex

您好我希望有人可以帮我解决这个正则表达式。

我希望匹配下面的模式一次从页面中提取元关键字:

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

欢迎任何想法

5 个答案:

答案 0 :(得分:4)

为什么你不能使用DOM解析器然后只提取所有元元素并迭代并做任何你想做的事情?

答案 1 :(得分:0)

我没有具体的答案,但这有用吗?这是我在 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>

答案 2 :(得分:0)

<meta name="keywords" content="(.+)" />

我可能错了,但如果它不是贪婪应该是它。逃避特殊角色。

答案 3 :(得分:0)

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

将让您将元关键字的内容检索为第三组(\ 3)更健壮的方式:
- 内容和名称都可以在'或'之间表达 - attributs的订单不固定
- 其他属性可以存在

请注意正确转义正则表达式字符串中的'或'以符合您喜欢的语言要求(在Python中,您最好使用三元组“)。

希望它有所帮助!

答案 4 :(得分:-1)

这是未经测试的但是jquery你不能这样做:

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

然后在里面存储数据,根据每个元标记中的数据执行一些ajax调用或一些操作。