Regex 正则表达式不';我不能在围棋中工作
原谅我是一个regex业余爱好者,但我真的很困惑为什么这段代码在Go中不起作用Regex 正则表达式不';我不能在围棋中工作,regex,go,Regex,Go,原谅我是一个regex业余爱好者,但我真的很困惑为什么这段代码在Go中不起作用 package main import ( "fmt" "regexp" ) func main() { var a string = "parameter=0xFF" var regex string = "^.+=\b0x[A-F][A-F]\b$" result,err := regexp.MatchString(regex, a) fmt.Println(r
package main
import (
"fmt"
"regexp"
)
func main() {
var a string = "parameter=0xFF"
var regex string = "^.+=\b0x[A-F][A-F]\b$"
result,err := regexp.MatchString(regex, a)
fmt.Println(result, err)
}
// output: false <nil>
我只想匹配输入的格式是否为=0x[A-F][A-F]
如果您需要任何帮助,我们将不胜感激。您必须在以下位置退出
\
:
但事实上,\b
(单词边界)在你的表达中似乎是无用的
没有它们它也能工作:
var regex string = "^.+=0x[A-F][A-F]$"
您是否尝试过使用原始字符串文字(使用后引号而不是引号)? 像这样:
var regex string = `^.+=\b0x[A-F][A-F]\b$`
啊,是的,这也奏效了。在Go中编写正则表达式时,我会记住这个技巧。公平地说。。。我不确定它为什么不能与
\b
一起使用。它似乎可以与已编译的正则表达式一起使用。\b
是一个转义字符,表示退格。例如,此代码fmt.Println(“12\b3”)
打印13
。这就是为什么需要使用原始字符串文字:好的,这就解释了。更一般地说(当需要单词边界时),我们必须在文本字符串中转义\。谢谢(你的答案是+1)。
var regex string = "^.+=0x[A-F][A-F]$"
var regex string = `^.+=\b0x[A-F][A-F]\b$`