2009-09-13 41 views
0

嗨,我希望有人可以幫助我與這個正則表達式。正則表達式來獲取元關鍵字

我想在百通符合以下一次從網頁中提取meta關鍵字:

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

任何想法都會受到歡迎

回答

4

爲什麼你不能使用DOM解析器,然後就提取所有meta元素並遍歷並做你想做的任何事情?

+0

我沒有使用dom對象的經驗......我將如何從中提取元關鍵字? – 2009-09-13 22:25:32

+2

+1。編寫自己的正則表達式很容易出錯,並且可能很難調試。沒有理由在有空閒解析器的時候這樣做。 – Fragsworth 2009-09-13 22:25:40

+2

首先找到一個DOM解析器,然後加載文檔,getElementsByTagName方法就是你要找的,你可以在遍歷meta元素的nodeList後使用getAttribute。 – 2009-09-13 22:28:12

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> 
0
<meta name="keywords" content="(.+)" /> 

我可能是錯的,但如果它是不貪婪,應該是它。只是逃避特殊字符。

-1

這是未經測試,但使用jQuery不能你只是做:

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

,然後裏面有兩種存儲數據,做一些AJAX調用或基於每個meta標籤的數據一些動作。

0

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

會讓您檢索的元關鍵字作爲第三組(\ 3)更健壯的方式的內容:
- 內容和名稱可以在兩者之間來表達「或」
- attributs'爲了不固定
- 其他attributs可以存在

只是要小心,以正確地逃脫「或‘正則表達式中的字符串,以符合自己喜歡的語言要求(在Python,你最好使用三聯’) 。

希望它可以幫助!