3

正規表現のアマチュアであることを許してください。しかし、なぜこのコードが 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>

これはPythonで問題なく動作するようです

import re

p = re.compile(r"^.+=\b0x[A-F][A-F]\b$")
m = p.match("parameter=0xFF")
if m is not None:
    print m.group()

// output: parameter=0xFF

私がやりたいのは、入力がフォーマットにあるかどうかを一致させることだけです<anything>=0x[A-F][A-F]

どんな助けでもいただければ幸いです

4

2 に答える 2

8

生の文字列リテラル (引用符の代わりに逆引用符を使用) を使用してみましたか? このような:

var regex string = `^.+=\b0x[A-F][A-F]\b$`
于 2013-01-06T15:52:12.273 に答える
5

解釈されたリテラル文字列\でエスケープする必要があります。

var regex string = "^.+=\\b0x[A-F][A-F]\\b$"

しかし実際には\b、あなたの表現では (単語の境界) は役に立たないように見えます。

それらがなくても動作します:

var regex string = "^.+=0x[A-F][A-F]$"

デモンストレーション

于 2013-01-06T15:48:34.510 に答える