首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式-选择第n个值

正则表达式-选择第n个值
EN

Stack Overflow用户
提问于 2014-06-06 01:25:45
回答 2查看 191关注 0票数 0

我正在尝试获取一个正则表达式,其中我可以选择表的索引为3的行中索引为1的单元格。我不确定我如何才能做到这一点,特别是在只选择特定细胞的情况下。我需要假设我不知道行或单元格将包含什么。

表格是HTML格式的。

有没有人能给我一些建议呢?

这必须是普通的javascript RegEx格式,我不能使用jQuery。

EN

回答 2

Stack Overflow用户

发布于 2014-06-06 02:19:01

这将匹配每个单元格中的所有文本。我现在正在处理第n个单元。在javascript中不起作用,因为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的搜索工具中,这种后视分析是不正确的。

我们可以在后视中的捕获组上放置一个数字来指定单元格编号,然后对for行号重复该过程。有什么建议吗?

更多的来电。

票数 0
EN

Stack Overflow用户

发布于 2021-07-16 01:34:30

我知道这是一个老帖子,但我也有同样的问题,这是第一个谷歌搜索结果。

下面是我想出来的(其中n是您想要匹配的第n个单元格):

代码语言:javascript
复制
/(?:<td>(?:(?!<\/td>).)*<\/td>){n-1}<td>(.*?)<\/td>/gi

对于上面@devon给出的示例:

代码语言:javascript
复制
<tr>
  <td>Jill</td>
  <td>Smith</td>
  <td>50</td>
</tr>
<tr>
  <td>Eve</td>
  <td>Jackson</td>
  <td>94</td>
</tr>

如果你想匹配第三个单元格(50),你可以使用以下命令:

代码语言:javascript
复制
(?:<td>(?:(?!<\/td>).)*<\/td>){2}<td>(.*?)<\/td>

Example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24066455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档