2017-05-02 7 views
0

次の正規表現に問題があります。私が一致しようとしている guidの正規表現

私のテスト文字列

Error: Invalid operation

re := regexp.MustCompile("(([a-f0-9]+\-)+[a-f0-9]+)\/(.*?)\/(.*?);version=(\d*)") 
match := re.FindStringSubmatch(hex.EncodeToString([]byte(href))) 
fmt.Println(match) 

/data/1221a7f47-84c1-445e-a615-ff82d92e2eaa/article/jane;version=1493756861347 

/data/1221a7f47-84c1-445e-a615-ff82d92e2eaa/article/john;version=1493756856398 

は、試合後に以下の文字列を期待している

  1. 1221a7f47-84c1-445e-a615-ff82d92e2eaa
  2. 記事
  3. ジェーン
+0

FYI:正規表現を生の文字列リテラルとして宣言するか、バックスラッシュを2倍にする必要があります。 –

+0

申し訳ありませんがコードで私を助けることができます、私はlangに行くのが新しい、ダブルバックスラッシュの代わりに文字列リテラルのアプローチに行きたい、あなたの助けをありがとう – user2727195

+0

https://regex101.com/r/Dzg3JC/1を参照してください/ codegen?language = golang –

答えて

1

あなたは正しく正規表現を宣言し、最初の行を修正する必要があります。これらを試してみてください:生の文字列リテラルを使用して

使用してバックスラッシュ(エスケープする)

re := regexp.MustCompile("(([a-f0-9]+\\-)+[a-f0-9]+)\\/(.*?)\\/(.*?);version=(\\d*)") 

Try it out

( `)

re := regexp.MustCompile(`(([a-f0-9]+\-)+[a-f0-9]+)\/(.*?)\/(.*?);version=(\d*)`) 

Try it out

+0

あなたは文字通りのリテラルアプローチを指摘しました。 – user2727195

+0

確かです。更新しました!今すぐ試してください – degant

+0

ああ、それを見ました。あなたが私のテスト文字列を試してみることができます – user2727195