2011-09-26 90 views
2

我試圖找到about文本和寬度值(如:50%)。要選擇50%與正則表達式,我必須在正則表達式中添加width="。所以,width="\d{2}%將選擇width="50%但我只需要在第一個中選擇50%select next 2 digits begin with XXX but not XXX

在第二個,我必須選擇(查找)只有about文本不是<td>about

<tr> 
    <td width="50%">about</td> 
  1. 選擇用百分比(與「寬」字搜索,但沒有選擇「寬度」)的寬度值。只有
  2. 選擇「關於」串
+1

正則表達式不是這個問題的答案 – Joe

+4

這個問題根本不清楚,你能否給出更多的細節? – Chango

回答

4

那麼你會發現,通過使用正則表達式解析HTML幾乎是不可能的。

但基本REG EXPS是:

var reWidth = /width="(\d{1,3}%)"/i; 
var reCellText = /<td[^>]?>([^<]*)/i; 

[編輯]

通過下面的評論猜測,你不明白的捕捉組。

var str = '<td width="25%">'; 
var myMatch = str.match(reWidth); 
if(myMatch){ 
    alert(myMatch[1]); 
} 
+0

謝謝,但它選擇數字「寬度」。我想刪除結果中的「寬度」單詞。並且reCellText也是選擇'​​關於'。 – uzay95

+0

然後用「無」替換「寬度」。 –

+0

是的,但我需要顯示在http://regexpal.com/網站選擇的結果。 – uzay95

3

我認爲你正在尋找一下屁股,可惜JavaScript不支持一下屁股。

這看起來像

(?<=width=")\d+ 

,只會匹配數字。

我想你應該多解釋一下你想達到的目的(爲什麼你想這樣做)來得到一個合適的答案。我不確定是否正則表達式是這裏的解決方案。

1

爲您的兩個要求一槍。用grep進行測試:

kent$ echo '<td width="50%">about</td>'|grep -oP '(?<=width=")\d+%|(?<=>)[^<>]*(?=<)' 
50% 
about 

(?<=width=")\d+%   ->%number after width=" 
|       ->or 
(?<=>)[^<>]*(?=<)   -> anything(besides <and>) between > and < 
+0

你能解釋一下這個RegEx嗎? – uzay95

+0

我更新瞭解釋以獲得更好的代碼格式的答案。那麼我不知道js不支持看後面。不熟悉js。 – Kent

相關問題