如何構建一種面向 html 標簽的正則表達式語法?
在處理字符串的過程中,正則表達式有著不可替代的位置?,F在的計算機高級語言中都有相應的正則表達式支持包。
如果我們把一個網頁中 html 代碼當作一個有結構的字符串,那么如何用一種類似正則表達式的方式來提取想要的html標簽(tags)呢?
這里先不考慮如何實現,而先考慮如何用一種類正則表達式的方式來描述html標簽。要取得一個html標簽(tag),需要知道該標簽的2類屬性:
1、標簽的位置;
2、標簽本身的屬性;
比如 在下面的html網頁中:
<html>
<body>
<div id="bodywrapper" class="wrapper">
<div id="leftwrapper" class="wrapper">
</div>
<div id="rightwrapper" class="wrapper">
<div class="column">
<div>
<div class="column">
<div>
</div>
</div>
</body>
</html>
如果想提取上面html代碼中 class 是 column的第二個 div 標簽,那么需要我指定該div的 id 和 class 和 位置信息 ?,F在的問題是:如何設計一個滿足上述要求的表達語法呢?
比如:
gettag:div{tag-name:div;tag-position:2;tag-class:column;tag-id:; tag-content:;}
tag-parent{tag-name:div;tag-position:2;tag-class:column;tag-id:; tag-content:;}
tag-child{......}
上面這是一種 易于理解的描述式的語法。
或者類似 python的語法:
gettag:div
tag-name:
tag-id:
tag-position:2
tag-class:column
tag-content:
tag-parent:
tag-name:
tag-id:
tag-position:2
tag-class:column
tag-content:
tag-child:
tag-type:table
不知道大家有沒有更適合的語法表現形式。只要能合理的設計這個表達語法,那么后繼的工作就好做了。這樣做的最終目的是:程序員可以用這種表達式解析html代碼,就像處理普通的字符串那樣的方便。
希望大家參與,多出主意,我會根據大家的反饋,完善這個語法,并做一個基于這個語法的實現。
參考:
關于正則表達式的基本介紹可以看這里:
http://www.49028c.com/htmldata/2006-03-16/1142469074.html
http://www.49028c.com/htmldata/2006-03-16/1142468929.html
正則表達式最早是由數學家stephen kleene于1956年提出,他是在對自然語言的遞增研究成果的基礎上提出來的。具有完整語法的正則表達式使用在字符的格式匹配方面上,后來被應用到熔融信息技術領域。自從那時起,正則表達式經過幾個時期的發展,現在的標準已經被iso(國際標準組織)批準和被open group組織認定。
正則表達式并非一門專用語言,但它可用于在一個文件或字符里查找和替代文本的一種標準。它具有兩種標準:基本的正則表達式(bre),擴展的正則表達式(ere)。ere包括bre功能和另外其它的概念。
許多程序中都使用了正則表達式,包括xsh,egrep,sed,vi以及在unix平臺下的程序。它們可以被很多語言采納,如html 和xml,這些采納通常只是整個標準的一個子集。
新聞熱點
疑難解答