【发布时间】:2015-10-02 01:23:47
【问题描述】:
我有这样的 HTML 内容:
<p>The bedding was hardly <strong>able to cover</strong> it and seemed ready to slide off any moment.</p>
这是 HTML 的完整版本。 http://collabedit.com/gkuc2
我需要搜索字符串hardly able to cover(只是一个示例),我想忽略我要查找的字符串中的任何 HTML 标记。因为在 HTML 文件中,字符串中有 HTML 标签,简单的搜索是找不到的。
用例是:我有一个文件的两个版本:
- 带有文本和标签的 HTML 文件
- 相同的文件,但仅包含原始文本(删除了所有标签和多余的空格)
我要搜索的子字符串(针)来自文本版本(不包含任何 HTML 标签),我想找到它在 HTML 版本(有标签的文件)中的位置。
有效的正则表达式是什么?
【问题讨论】:
-
你的
CompleteHTML 在哪里 -
简单:你不使用正则表达式。正则表达式 + html = 坏主意。使用 DOM 解析器,或剥离所有标签,然后在纯文本上进行正则表达式。
-
正如@MarcB 所说,这通常不是您使用RegEx 的地方。如果您正在寻找一个简单的查找,您可以尝试将
(.*)放在您要查找的每个单词之间。不过,这可能只有大约 40% 的正确率:即hardly(.*)able(.*)to(.*)cover -
我想说的唯一方法是构建某种树。位置树。
-
@MarcB 我已经使用 PHP DOM 扩展对 HTML 文件进行了一些处理(例如获取不带标签的原始文本)。但是现在我需要从纯文本中获取一个子字符串并在 HTML 版本中找到它。
标签: javascript php html regex search