考虑以下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
}
它不优雅,无法正常工作: - )
- 我想避免循环。我可以编写正则表达式以处理整个代码吗?
- 这实际上只会导致单个
<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)
}