当我使用golang进行正则表达式匹配时。文件和变量之间有什么不同? 1.在var
str:=`<Row ss:Height="19.8">
<Cell ss:StyleID="s74"><Data>{{range $prj:=.prj}}</Data></Cell>
</Row>
<Row ss:AutoFitHeight="0" >
<Cell ss:StyleID="s70"/>
<Cell ss:StyleID="s71"><Data>{{$prj.PrjName}}</Data></Cell>
<Cell ss:StyleID="s72"><Data>{{$prj.ReplyNo}}</Data></Cell>
</Row>
<Row ss:AutoFitHeight="0">
<Cell><Data>{{end}}</Data></Cell>
</Row>`
re := regexp.MustCompile(`<Row[^>]*>[\s\S.].*({{[range|end].*?}})</Data></Cell>[\s\S]*?</Row>`)
fmt.Println(re.MatchString(str)) //it is true!
来自文件。
body,_:= ioutil.ReadFile(&#34; ./ ag.xml&#34;)//ap.xml内容是str的内容
str:= string(body)// str是上面1个str的内容
re:= regexp.MustCompile(<Row[^>]*>[\s\S.].*({{[range|end].*?}})</Data></Cell>[\s\S]*?</Row>
)
fmt.Println(re.MatchString(str))//但结果alaways是假的?
它们的不同之处是什么?怎么解决呢?
答案 0 :(得分:0)
你能试试这样的......
body, _ := ioutil.ReadFile("./ag.xml") //ap.xml content is the str's contents
str := string(body) //str is the above 1 str's contents
re := regexp.MustCompile(< R o w [^>]*> [\s\S.].*({{[range|end].*?}}) < / D a t a > < / C e l l > [\s\S]*? < / R o w >)
fmt.Println(re.MatchString(str))
我可能错过了两个字符之间的空格,再次检查它。如果这意味着它意味着您正在使用的文件是UTF16字符集或者其他东西,但您的正则表达式与字符串匹配,那么您可能需要将UTF16转换为字符串并匹配它。