将几个<script>标签合并到Kotlin中

考虑以下一段HTML代码:

<script>...</script> <script>...</script> <div>...</div> <script>...</script> <script>...</script> <script>...</script> <script>...</script> <style>...</style> <script>...</script> <script>...</script> 

我想将脚本部分合并为一个,如下所示:

 <script>...</script> <div>...</div> <script>...</script> <style>...</style> <script>...</script> 

我试过这段代码:

 while (true) { val newSource = source.replace( "[<]script[>](.*?)[<]/script[>]\\s*[<]script[>]" .toRegex(setOf(RegexOption.MULTILINE, RegexOption.DOT_MATCHES_ALL)), "<script>$1</script>") if (source.equals(newSource)) { break; } source = newSource } 

这不是优雅,不工作:-)

  1. 我想避免循环。 我可以写一个正则表达式来处理整个代码吗?
  2. 这实际上会导致只有一个<script>...</script> ,因为它将消耗中间的<div><style> 。 我如何禁止包含标签的内容?

 fun main(args: Array<String>) { var source=""" <script>...</script> <script>...</script> <div>...</div> <script>...</script> <script>...</script> <script>...</script> <script>...</script> <style>...</style> <script>...</script> <script>...</script> """ source = source.replace( "[<]/script[>]\\s*[<]script[>]" .toRegex(setOf(RegexOption.MULTILINE, RegexOption.DOT_MATCHES_ALL)), "\n") println(source) }