Skip to content

Instantly share code, notes, and snippets.

@memememomo
Last active August 29, 2015 14:08
Show Gist options
  • Save memememomo/66c84cd07c20a70208f2 to your computer and use it in GitHub Desktop.
Save memememomo/66c84cd07c20a70208f2 to your computer and use it in GitHub Desktop.
Go言語で後方参照を用いた置換処理 ref: http://qiita.com/uchiko/items/ad3ffc61448b322f43f6
package main
import (
"fmt"
"regexp"
)
func main() {
str := "テスト1{T_NAME}テスト2{T_AGE}テスト3"
re, err := regexp.Compile("{T_(.+?)}")
if err != nil {
panic(err)
}
fmt.Println("---------- Find ------------")
fmt.Println(string(re.Find([]byte(str))))
fmt.Println("---------- FindAll ------------")
rets_findall := re.FindAll([]byte(str), -1)
for _, ret := range rets_findall {
fmt.Println(string(ret))
}
fmt.Println("---------- FindAllIndex ------------")
rets_findallindex := re.FindAllIndex([]byte(str), -1)
for _, ret := range rets_findallindex {
fmt.Println(ret)
}
fmt.Println("---------- FindAllString ------------")
rets_findallstring := re.FindAllString(str, -1)
for _, ret := range rets_findallstring {
fmt.Println(ret)
}
fmt.Println("---------- FindAllStringIndex ------------")
rets_findallstringindex := re.FindAllStringIndex(str, -1)
for _, ret := range rets_findallstringindex {
fmt.Println(ret)
}
fmt.Println("---------- FindAllStringSubmatch ------------")
rets_findallstringsubmatch := re.FindAllStringSubmatch(str, -1)
for _, ret := range rets_findallstringsubmatch {
fmt.Println(ret)
}
fmt.Println("---------- FindAllStringSubmatchIndex ------------")
rets_findallstringsubmatchindex := re.FindAllStringSubmatchIndex(str, -1)
for _, ret := range rets_findallstringsubmatchindex {
fmt.Println(ret)
}
fmt.Println("---------- FindIndex ------------")
rets_findindex := re.FindIndex([]byte(str))
fmt.Println(rets_findindex)
fmt.Println("---------- FindString ------------")
rets_findstring := re.FindString(str)
fmt.Println(rets_findstring)
fmt.Println("---------- FindStringIndex ------------")
rets_findstringindex := re.FindStringIndex(str)
fmt.Println(rets_findstringindex)
fmt.Println("---------- FindStringSubmatch ------------")
rets_findstringsubmatch := re.FindStringSubmatch(str)
fmt.Println(rets_findstringsubmatch)
fmt.Println("---------- FindStringSubmatchIndex ------------")
rets_findstringsubmatchindex := re.FindStringSubmatchIndex(str)
fmt.Println(rets_findstringsubmatchindex)
fmt.Println("---------- FindSubmatch ------------")
rets_findsubmatch := re.FindSubmatch([]byte(str))
fmt.Println(rets_findsubmatch)
fmt.Println("---------- FindSubmatchIndex ------------")
rets_findsubmatchindex := re.FindSubmatchIndex([]byte(str))
fmt.Println(rets_findsubmatchindex)
fmt.Println("---------- Match ------------")
rets_match := re.Match([]byte(str))
fmt.Println(rets_match)
fmt.Println("---------- MatchString ------------")
rets_matchstring := re.MatchString(str)
fmt.Println(rets_matchstring)
fmt.Println("---------- NumSubexp ------------")
rets_numsubexp := re.NumSubexp()
fmt.Println(rets_numsubexp)
fmt.Println("---------- ReplaceAll ------------")
rets_replaceall := re.ReplaceAll([]byte(str), []byte("REPLACE"))
fmt.Println(string(rets_replaceall))
fmt.Println("---------- ReplaceAllFunc ------------")
rets_replaceallfunc := re.ReplaceAllFunc([]byte(str), func(b []byte) []byte { fmt.Println(string(b)); return []byte("REPLACE") })
fmt.Println(string(rets_replaceallfunc))
fmt.Println("---------- ReplaceAllString ------------")
rets_replaceallstring := re.ReplaceAllString(str, "REPLACE")
fmt.Println(rets_replaceallstring)
fmt.Println("---------- ReplaceAllStringFunc ------------")
rets_replaceallstringfunc := re.ReplaceAllStringFunc(str, func(s string) string { fmt.Println(s); return "REPLACE" })
fmt.Println(rets_replaceallstringfunc)
}
--------- Find ------------
{T_NAME}
---------- FindAll ------------
{T_NAME}
{T_AGE}
---------- FindAllIndex ------------
[10 18]
[28 35]
---------- FindAllString ------------
{T_NAME}
{T_AGE}
---------- FindAllStringIndex ------------
[10 18]
[28 35]
---------- FindAllStringSubmatch ------------
[{T_NAME} NAME]
[{T_AGE} AGE]
---------- FindAllStringSubmatchIndex ------------
[10 18 13 17]
[28 35 31 34]
---------- FindIndex ------------
[10 18]
---------- FindString ------------
{T_NAME}
---------- FindStringIndex ------------
[10 18]
---------- FindStringSubmatch ------------
[{T_NAME} NAME]
---------- FindStringSubmatchIndex ------------
[10 18 13 17]
---------- FindSubmatch ------------
[[123 84 95 78 65 77 69 125] [78 65 77 69]]
---------- FindSubmatchIndex ------------
[10 18 13 17]
---------- Match ------------
true
---------- MatchString ------------
true
---------- NumSubexp ------------
1
---------- ReplaceAll ------------
テスト1REPLACEテスト2REPLACEテスト3
---------- ReplaceAllFunc ------------
{T_NAME}
{T_AGE}
テスト1REPLACEテスト2REPLACEテスト3
---------- ReplaceAllString ------------
テスト1REPLACEテスト2REPLACEテスト3
---------- ReplaceAllStringFunc ------------
{T_NAME}
{T_AGE}
テスト1REPLACEテスト2REPLACEテスト3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment