[英]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 ,你必须迭代它来做任何你想做的事情。 您可以再次对其进行迭代以获取所有子节点或仅获取其文本。 遍历结果集并提取数据应该是递归的,但我只是创建了一个简单的示例来了解这个想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.