2012-06-02 111 views
0

我真的可以使用一些幫助。我有以下兩行。正則表達式 - 分組?

<TD noWrap>Data: <B><SPAN class="TableBody clsBold">4</SPAN></B></TD> 
<TD noWrap>Format: <B><SPAN class="TableBody clsBold">9</SPAN>/<SPAN class=TableBody> </SPAN></B></TD> 

我需要獲取標籤之間(4和9分別)文本

我使用正則表達式如下聲明:

(\s)*(<B>)*<(?<SPAN>\w*)(?:.*)>(?:.*)</\k<SPAN>> 

這個偉大的工程的第一線在:

Data: (\s)*(<B>)*<(?<SPAN>\w*)(?:.*)>(?:.*)</\k<SPAN>> 

但不與

工作
Format: (\s)*(<B>)*<(?<SPAN>\w*)(?:.*)>(?:.*)</\k<SPAN>> 

,因爲它抓住我需要節後SPAN,所以我沒有得到的9組4

如何獲得我需要使用什麼不同的前綴相同的正則表達式行。

+5

使用正則表達式解析HTML通常是一個壞主意。你有沒有考慮過諸如HTML解析器之類的替代品? –

+1

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454。也就是說,你用什麼編程語言來驅動你的正則表達式?我們會推薦一個更好的選項來更可靠地解析HTML –

回答

0

我會指定正是我在尋找正則表達式。如此說來,這樣的事情應該足夠了:

<TD noWrap>([A-Za-z]+:)\s*<B><SPAN class="TableBody clsBold">(\d+)</SPAN> 

它僅使用兩個捕獲組,所以你應該得到儘可能匹配("Data", "4"),並("Format", "9")

+0

中的東西;(文件中有一千個前綴,我只需要它們中的一些!所以我把我需要的數組作爲前綴來折騰正則表達式,我得到的是我需要的行,但不是第二個(格式)行的分組。 – Jordan

+1

其實,第二個想法!這可以解決,因爲我可以循環所有格式化的行。 – Jordan

+0

我該如何得到這個正則表達式來獲取第二組SPAN標記:郵編: 06902 - 2630 Jordan