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