2011-03-31 39 views
0

我有一個正則表達式,它將html分解爲必要的正則表達式。我不會呈現整個正則表達式,因爲它太長了。簡而言之,它是一個多行表格單元格逐行解析器。最近我遇到了一個麻煩:解析頁面的佈局發生了變化,所以我開始重新編寫正則表達式以適應新的佈局,但是我發現在某些行中的特定單元格中需要的佈局封裝數據可能會有所不同。使用條件捕獲正則表達式組

我們有什麼?

單元格的佈局可能像this或類似this

這使我的問題:我該如何獲取所需的數據,並沒有額外的不必要的羣體?

這裏描述的正則表達式中的條件regular-expressions.info/conditional.html,我讀過它,但仍然沒有線索。

回答

2

這將有助於:)

<td class='(?:class1|class2)'>\s*((?=\w).*)\s*</td> 
+0

+1你的表情顯然比我的表情要好 – morja 2011-03-31 10:08:34

+0

感謝您的支持並相應地更新您的答案:) – CodeWrite 2011-03-31 12:05:39

+0

謝謝。你的正則表達式非常適合。 – Nemoden 2011-04-01 03:20:14

1

編輯:接管了regexhacks表達式,因爲它是一個更好的解決方案。

不確定,但也許您正在尋找用作(?:)的non-capturing組。因此,你可以做

<td class='class(?:1|2)'>\s*((?=\w).*)\s*</td> 

那麼,在這個例子中,你將不需要羣體:

<td class='class[12]'>\s*((?=\w).*)\s*</td> 

但在更復雜的情況下,你可以使用它們。

見樣本:rubular

但是這可能不是你想要的。你能否提供一個更精確的問題例子?

+0

感謝您的迴應。我想現在我開始明白條件正則表達式是如何工作的。 – Nemoden 2011-04-01 03:19:40