【问题标题】:Capture String between String Regex在字符串正则表达式之间捕获字符串
【发布时间】:2017-08-29 18:56:16
【问题描述】:

我在这个网站上看过一堆例子,但仍然不能完全正确。我试图只抓取>< 之间的东西。 示例字符串:

<div class='col-lg-12 hintDisplay'>slavery <b>ALSO USE</b> human trafficking</div>

首先我做到了:

var regexp = />(.*?)</g;
var matches_array = item.toString().match(regexp);
console.log(matches_array);

得到:

>slavery <,>ALSO USE<,> human trafficking<

然后我阅读了更多内容并尝试了:

var regexp = /(>)(.*?)(?=<)/g;
var matches_array = item.toString().match(regexp);
console.log(matches_array);

现在:

>slavery ,>ALSO USE,> human trafficking

我找不到有关如何摆脱领先的&gt; 的文档。那么我该如何抓住&gt;&lt; 之间的东西呢?

【问题讨论】:

  • 为什么不把字符串解析为html,然后用jquery提取你需要的内容呢?如果是正则表达式,您需要删除 &gt; 周围的括号。 /&gt;(.*?)(?=&lt;)/g 所以它没有被捕获。
  • 谢谢!当我回到我的办公桌时,我会尝试一下。

标签: javascript regex


【解决方案1】:

在我看来,您应该使用内置的 HTML 解析器并使用 JQuery 或类似的东西将您的文本从 HTML 中提取出来。

不应该对 HTML 进行正则表达式的一些原因可以在这里找到:

您无法使用正则表达式解析 [X]HTML。因为正则表达式无法解析 HTML。正则表达式不是一个可以用来正确解析 HTML 的工具。

RegEx match open tags except HTML self-contained tags

【讨论】:

  • 谢谢,我会采纳你的建议的。我不会选择您的答案作为正确答案,因为如果下一个人文本不是 HTML 怎么办。这是我的情况的正确答案,但不是问题的正确答案。再次感谢!
  • 您的问题是关于使用 javascript 解析 html 的问题,这是正确的答案,应该被接受。
【解决方案2】:

在这种情况下,我喜欢做一个像这样的正则表达式:

var regexp = />([^<]+)</;

这表示以 > 开头,然后至少 1 个非

尝试使用 .*?通常会导致您遇到的问题:)

https://regex101.com/r/UJrVWd/1

【讨论】:

  • 我仍然收到&gt;slavery &lt;,&gt;ALSO USE&lt;,&gt; human trafficking&lt; (15:20:27:481 | null) 使用您的解决方案。
  • 没有g &gt;slavery &lt;,slavery (15:25:09:977 | null)。只有第一场比赛。
  • 查看 regex101 链接,看起来它正在工作。也许我在这里遗漏了一些特定于 javascript 的内容
  • OP,您正在将完整匹配而不是捕获的组打印到控制台
猜你喜欢
  • 1970-01-01
  • 2023-01-10
  • 2019-03-30
  • 2020-03-23
  • 2018-03-22
  • 1970-01-01
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多