2011-09-26 33 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

相关问题