您好我希望有人可以帮我解决这个正则表达式。
我希望匹配下面的模式一次从页面中提取元关键字:
.match(/(<meta name=[\"|\']keywords([^\/>]*))/ig);
欢迎任何想法
答案 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调用或一些操作。