gpt4 book ai didi

正则表达式只保留标签之间的内容但选择所有内容

转载 作者:行者123 更新时间:2023-12-05 04:40:47 24 4
gpt4 key购买 nike

所以在 VS Code 中我使用了这个 <script>(.|\n)*?<\/script>选择 <script> 之间的所有内容的正则表达式模式标签(包括标签),效果很好。 (见下面的例子)

<html>
<p>dsldsdsd</p>
<p>dsldsdsd</p>
<p>dsldsdsd</p>

*<script>
Some code
</script>*

*<script>
Some code
</script>*

<p>dsldsdsd<p>
<p>dsldsdsd<p>

</html>

因此 <script>(.|\n)*?<\/script> * * 之间的所有内容都会被选中。

现在我真正想做的是做与我向您展示的相反的事情。例如,像这样。选择其他所有内容,但留在里面 <script> </script>标签。 (连同标签)

*<html>
<p>dsldsdsd</p>
<p>dsldsdsd</p>
<p>dsldsdsd</p>*

<script>
Some code
</script>

<script>
Some code
</script>

*<p>dsldsdsd</p>
<p>dsldsdsd</p>

</html>*

所以我在线浏览了一些正则表达式文档,并尝试使用以下正则表达式来选择其他所有内容(并将所有内容保留在 <script> 标记之间)

^((?!<script>(.|\n)*?<\/script>).)*$

但这只是保留了<script>这个词.我做错了什么?

简而言之,我要做的是否定 <script>(.|\n)*?<\/script>表达。

感谢任何帮助。谢谢。

最佳答案

一个想法是match what you don't want but capture what you need\1

<script>[\s\S]*?<\/script>|((?:<(?!script)|[^<])[\s\S]*?)(?=<script|$)

See this demo at regex101

不要跳过开头 <script交替匹配一个字符,不是<或匹配 <后面没有 script通过使用前瞻直到 <script发生或 $结束。

关于正则表达式只保留标签之间的内容但选择所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70208876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com