为可怕的标题道歉,我不知道如何以简短的形式表达这一点。
我有一个包含html的字符串(文本,一些span
和一些<br>
s)。
我想要实现的是找到第一个span
,其结尾为“-focused”。为了增加乐趣,span
在title
属性中有换行符。然而,他们确实有一个固定的结构,我可以根据需要重新安排它们。
这就是我到目前为止所做的:
<span[\s\S]*?class=".*-focused"[\s\S]*?>[\s\S]*?<\/span>
但是从第一个跨度开始到匹配跨度结束我得到一个匹配。 这是一个regex101链接来说明(包含示例文本)
https://regex101.com/r/W7YDU5/2
我尝试使用正/负前瞻和捕获/非捕获组,但此时我比任何事情都更困惑。
答案 0 :(得分:1)
您应该避免在这里使用第一个[\s\S]
。为了得到你需要的东西,你可能想要在同一个开始标记内进行。在匹配除>
之外的所有内容时,这是隐式完成的:
<span[^>]*?class=".*-focused"[^>]*?>[\s\S]*?<\/span>
答案 1 :(得分:-1)
document.querySelector('span[class=$-focused]')
这应该找到第一个span
,其中一个类以-focused