我知道“不要对 html 使用正则表达式”,但说真的,加载整个 html 解析器并不总是一种选择。
所以,这是场景
<script...>
some stuff
</script>
<script...>
var stuff = '<';
anchortext
</script>
如果你这样做:
<script[^>]*?>.*?anchor.*?</script>
您将从第一个脚本标记捕获到第二个块中的 /script。有没有办法做一个。*?但是通过替换 . 使用匹配块,例如:
<script[^>]*?>(^</script>)*?anchor.*?</script>
我查看了负前瞻等,但我无法让某些东西正常工作。通常我只使用 [^>]*? 为了避免跑过结束块,但在这个特定的例子中,脚本内容中有一个“<”,它在到达锚文本之前停止匹配。
为了简化,我需要类似 [^z]*? 但我需要一个捕获组来适应字符串,而不是单个字符或字符范围。
.*?(?!z) doesn't have the same effect as [^z]*? as I assumed it would.
这是我被困在的地方:http ://regexr.com?34llp