所以在 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>運算式。
任何幫助表示贊賞。謝謝。
uj5u.com熱心網友回復:
一個想法是匹配您不想要的但捕獲您需要的\1
<script>[\s\S]*?<\/script>|((?:<(?!script)|[^<])[\s\S]*?)(?=<script|$)
在 regex101 上查看此演示
<script要不跳過交替中的開頭,要么匹配一個字符,即 not<或匹配<后面沒有script使用前瞻直到<script發生或$結束的字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/372662.html
上一篇:當另一個元素懸停時更改svg路徑
下一篇:無法在VSCode中打開終端
