【问题标题】:Regexp to select first n words and HTML tags around them正则表达式选择前 n 个单词和它们周围的 HTML 标记
【发布时间】:2019-11-03 13:16:27
【问题描述】:

我知道在给定的字符串中只选择单词或只选择 HTML 标记是可能的。但是可以同时选择吗?

在这个例子中,假设我们要选择 前 5 个单词和 HTML 标签

输入:

<p><strong>This is</strong> <span style="font-size: 1em;">test</span> <strong><em>five</em></strong> words.</p> 
test <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>

预期输出:

<p><strong>This is</strong> <span style="font-size: 1em;">test</span> <strong><em>five</em></strong> words.</p>

编写正则表达式来匹配所有单词或匹配所有 HTML 标记很简单,但不知道如何仅使用正则表达式来实现上述结果。

【问题讨论】:

标签: javascript regex


【解决方案1】:

我知道它不是正则表达式,但它是纯 javascript,并且在使用文档中的“选择节点”时主要是首选方法:XPath。

使用这段 XPath,您将选择包含文本“这是测试”的最大节点:

document.evaluate("/html/body//*[contains(.,'This is test')]", document);

在您的示例中,第一个 &lt;p&gt; 将被选中,包括它的子标签。

上面的函数返回一个XPathResult,你必须迭代它来做你想做的任何事情。您可以再次对其进行迭代以获取所有子节点或仅获取其文本。遍历结果集并提取数据应该是递归的,但我只是创建了一个简单的示例来理解这个想法。

An example jsFiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 2016-01-09
    相关资源
    最近更新 更多