<tr bgcolor='#C0C0C0'>
<td>ID</td><td>personName</td>
<td>homePhone<br>officePhone</td>
<td>city</td>
<td>street</td>
</tr>
好的,所以这是我作为webresponse得到的一段HTML,我需要用grup解析它以提取ID,personName,city,homePhone,officePhone和street。
有人可以给我一个REGEX模式吗?我已经尝试了几个小时,我无法看到我错在哪里。无论如何,有任何好的工具来创建正则表达式,一次又一次地运行应用程序是一个痛苦。感谢。
答案 0 :(得分:0)
(假设.NET ......)
这应该这样做:
(?s:<tr.*?>(?:.*?<td.*?>(?<content>.*?)</td>)*)
提取这些值:
ID
personName
homePhone<br>officePhone
city
street
它将返回一个匹配,一个组,多个捕获。
例如,此代码会将每个值写入控制台。
var input = "<tr bgcolor='#C0C0C0'><td>ID</td>\n<td>personName</td>\n<td>homePhone\n<br>officePhone</td>\n<td>city</td>\n<td>street</td></tr>";
var pattern = "(?s:<tr.*?>(?:.*?<td.*?>(?<content>.*?)</td>)*)";
var match = Regex.Match(input, pattern);
foreach (var capture in match.Groups["content"].Captures)
Console.WriteLine(capture.Value);
它适用于任意数量的单元格。它忽略了单元格之间的文本,新行和空格。它会忽略行或单元格上的任何属性。
我使用此工具处理正则表达式:http://www.radsoftware.com.au/regexdesigner/