使用golang和regexp摆脱外部标签?

时间:2015-01-22 01:12:23

标签: regex go

我正在使用goalng来做一些模板,并希望摆脱外部标签。 如下:

  input := `aaa<div><dxh r="4" spans="1:15"><c r="A4" s="7"><v>{{4567}}

</v></c><c r="B4" t="s" s="7"><v>11</v></c><c r="C4" t="s" s="7"><v>12</v>

</c><c r="M4" t="s" s="8"><v>20</v></c></dxh>aaa</div>bbb<dxh>{{12345}}

</dxh>amrambler`

我希望得到这个字符串。它会忽略标记"<dxh ....>""</dxh>"。并且只保留它们之间的内容"{{4567}}""{{12345}}"

str=`aaa<div>{{4567}}aaa</div>bbb{{12345}}amrambler`

提前感谢!

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容获得所需的输出。

package main

import (
   "fmt"
   "regexp"
)

func main() {
    re := regexp.MustCompile("(?s)<dxh[^>]*>.*?({{[^}]*}}).*?</dxh>")

    input := `aaa<div><dxh r="4" spans="1:15"><c r="A4" s="7"><v>{{4567}}
              </v></c><c r="B4" t="s" s="7"><v>11</v></c><c r="C4" t="s" s="7"><v>12</v>
              </c><c r="M4" t="s" s="8"><v>20</v></c></dxh>aaa</div>bbb<dxh>{{12345}}
              </dxh>amrambler`

    res := re.ReplaceAllString(input, "$1")
    fmt.Println(res) // aaa<div>{{4567}}aaa</div>bbb{{12345}}amrambler  
}

GoPlay