Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式不';我不能在围棋中工作_Regex_Go - Fatal编程技术网

Regex 正则表达式不';我不能在围棋中工作

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

原谅我是一个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(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$`