我试图获得一个正则表达式,在那里我可以选择索引为1的单元格,在表格的索引为3的行中。我不确定如何做到这一点,特别是只挑选那个特定的细胞。我需要假设我不知道行或单元格将包含什么。
该表格为HTML格式。
请有人就此提出一些建议吗?
这必须是普通的javascript RegEx表单,我不能使用jQuery。
答案 0 :(得分:0)
这匹配每个单元格中的所有文本。我现在正在处理 nth 单元格。 在javascript中不起作用,因为javascript不支持lookbehind。我知道你想在javascript中这样做,但那是不可能的。你不能在没有后卫的情况下做这个正则表达式。
假设表格形式:
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
与每个单元格中的文本匹配的正则表达式是:
(?<=<td>).*?(?=<)
我正在思考这个问题:
(?s)((?<=(<\/td>){cell index}+<td>).*?(?=<.*))
但是这种外观并没有正确解析,至少在Sublime的搜索工具中是这样。
我们可以在lookbehind中的捕获组上放置一个数字来指定单元格编号,然后为行号重复该过程。有什么建议吗?
更多传入。
答案 1 :(得分:0)
我知道这是一个旧线程,但我遇到了同样的问题,这是第一个谷歌搜索结果。
这是我想出的(其中 n
是您要匹配的第 n 个数字单元格):
/(?:<td>(?:(?!<\/td>).)*<\/td>){n-1}<td>(.*?)<\/td>/gi
上面@devon 给出的例子:
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
如果您想匹配第 3 个单元格 (50),您可以使用以下内容:
(?:<td>(?:(?!<\/td>).)*<\/td>){2}<td>(.*?)<\/td>