Ruby から Go にコードを移行する場合、正規表現の互換性が課題になることがあります。 Ruby は PCRE を利用するのに対し、Go は Google の RE2 を利用するため、開発者は表現を適応させる方法が必要になります。
具体的には、一致したパターンから特定のデータを抽出できるグループ機能のキャプチャが課題となります。 Go でこの機能を複製するには、次の手順を実行できます。
たとえば、正規表現を使用して日付文字列から年を抽出するには(?Pd{4})-(?Pd{2})-(?Pd{2}) の場合、次のコードを使用します:
package main import ( "fmt" "regexp" ) func main() { r := regexp.MustCompile(`(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})`) fmt.Printf("%#v\n", r.FindStringSubmatch(`2015-05-27`)) fmt.Printf("%#v\n", r.SubexpNames()) }
このコードは次のように出力します:
[]string{"2015", "05", "27"} []string{""}
最初の行にはキャプチャされた値が順番に表示され、2 行目にはキャプチャ グループが表示されます。名前。これらの手法を使用すると、Ruby と同様のキャプチャ グループ機能を Go で実現できます。
以上がRuby のキャプチャ グループ機能を Go Regex で複製するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。