【发布时间】:2021-03-03 10:50:07
【问题描述】:
我最近开始学习/使用 RegEx。
有没有办法避免匹配属于 HTML 标签属性或属于标签属性的单词?
例如:
<p style=“position: absolute”>position: </p>
我试过了
/\bposition\b\W\s/g
但这两个实例都匹配。
只能匹配第二个“位置:”吗?
澄清:
我正在尝试在文档中搜索用户输入的单词并将其替换为包含这些单词的 span 元素 - 这类似于“Ctrl + F”。仅仅拥有文本是不够的,因为一旦将文本替换为 span 元素,我还需要一种方法来更新文档。
【问题讨论】:
-
现在您已经了解了 RegEx,现在该了解when not to use RegEx,以及何时使用 HTML 解析器,例如 HTML Agility 包。
-
不要。别。别。别。了解DOM Manipulation 以及如何获取段落DOM 元素 的文本内容,而不是尝试在页面源文本 上工作。
-
@Stephen P 问题是我知道如何相对较好地遍历 DOM,但是我的程序需要在任何页面上搜索单词,并且查询元素似乎对此不正确。我认为文档正文中的 RegEx 更有意义。将进一步研究它。
-
看第一个答案及以后 here 。这也可能是 XY 问题,你到底想做什么?
-
OK 很酷,该页面上的 XPath 答案可能是一个很好的起点。自从我使用 XPath 以来已经有一段时间了,但我 99% 确定您可以获得节点列表而不是单个节点。拥有节点后,您就可以操作这些节点的内容。基本伪代码:
Find me the nodes containing this text. For each node replace the searched text with <span>Text</span>
标签: javascript html regex regexp-replace