繁体   English   中英

正则表达式到 select 前 n 个单词和 HTML 标签周围

[英]Regexp to select first n words and HTML tags around them

我知道给定字符串中的 select 仅字或 select 仅 HTML 标记是可能的。 但是是否可以同时使用 select ?

在此示例中,假设我们想要 select前 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>

预期 Output:

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

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

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

使用这块 XPath 您将 select 包含文本“这是测试”的最大节点:

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

在您的示例中,第一个<p>将被选中,包括其子标签。

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

一个例子 jsFiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM