Last active
August 29, 2015 14:08
-
-
Save memememomo/66c84cd07c20a70208f2 to your computer and use it in GitHub Desktop.
Go言語で後方参照を用いた置換処理 ref: http://qiita.com/uchiko/items/ad3ffc61448b322f43f6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--------- 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