用户将提供一些搜索词。假设它是一个字符串,可能包含任何单词或特殊字符(例如 /
、?
、,
、$
、*
等)。
我需要匹配这个字符序列出现在 HTML 中的任何地方,即使搜索词跨越连续的跨度;在我的 HTML 中,特殊字符有时会单独包装。
例如:用户提供“你妈妈?”,有一段包含<span>Your mom</span><span class="special">?</span>
我需要一种有效的方法来确定 a) 查询确实存在,以及 b) 哪些元素包含查询。搜索到的文本可以是复杂的 HTML,包含大量单词、span、div 等。
最佳答案
我可能会尝试编写一个解析器来区分标签的开始和结束,以及它们的文本内容(希望 HTML 不包含不完整的标签)。对于索引,也许你可以使用一堆元组,每个元组代表深度和计数,以及当前状态的内存。您的简单示例将索引为:
[(1,1)] tag opens, text: 'Your mom'
query text matches so far
[(1,1),(1,1)] tag closes, remove.
[(1,2)] tag opens, maintain depth, increase count, text: '?'
query text continues to match
[(1,2)] tag closes, remove
关于javascript - 匹配一个词,其中候选者可以跨越连续的组(跨度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37288402/