regexp包 提供了对正则表达式的支持
常用函数
- Match:测试字节切片是否匹配正则表达式字符串
- MatchString:测试字符串是否匹配正则表达式字符串
- MatchReader:测试RuneReader对象是否匹配正则表达式字符串
QuoteMeta:将正则表达式使用的字符.+*?()[]^$等使用\进行转义
结构体
Regexp
常用函数
- Compile: 解析字符串位正则表达式对象指针
- MustCompile:解析字符串位正则表达式对象指针,正则字符串解析失败报错
常用方法
- Find:在字节切片中查找第一个匹配的结果
- FindString: 在字符串中查找第一个匹配的结果
- FindAll:在字节切片中查找所有匹配的结果
- FindAllString:在字符串中查找所有匹配的结果
- Longest: 贪婪模式切换
- Match: 判断字节切片是否与正则表达式匹配
- MatchString:判断字符串是否与正则表达式匹配
- ReplaceAll:替换匹配的所有字节切片
- ReplaceAllString:替换匹配的所有字符串
- Split: 按照正则表达式分割为N个元素的字符串切片, N<0 分割所字串
- String: 将正则表达式转化为字符串类型
实操
learnRegexp.go
```go package learnRegexp
import ( “fmt” “regexp” )
func LearnRegexp() {
fmt.Println(regexp.MatchString(^\d+$
, “1”))
fmt.Println(regexp.QuoteMeta(\.+*?()|[]^$
))
var reg *regexp.Regexp = regexp.MustCompile(`(?U)\d+`) // 标记为非贪婪模式
var reg1 *regexp.Regexp = regexp.MustCompile(`\d+`)
fmt.Println(reg.FindString("010-123439459-123"))
fmt.Println(reg.FindAllString("010-123456890-123", 2))
fmt.Println(reg.FindAllString(`010-123456789-123`, -1))
fmt.Println(reg1.FindString(`010-123456789-123`))
fmt.Println(reg1.FindAllString("010-123456789-234", 2))
fmt.Println(reg1.FindAllString("010-123456789-234", -1))
reg.Longest() // 切换为贪婪模式
fmt.Println(reg.FindString("010-123456789-123"))
fmt.Println(reg.FindAllString("010-123456789-123", 2))
fmt.Println(reg.FindAllString("010-123456789-123", -1))
fmt.Println(reg.ReplaceAllString("010-123456789-123", "xxx"))
reg01 := regexp.MustCompile(`^010-`)
fmt.Println(reg01.MatchString("010-1232325-234"))
fmt.Println(reg01.MatchString("040-1232325-234"))
reg02 := regexp.MustCompile(regexp.QuoteMeta(`-`))
fmt.Println(reg02.Split("010-11111-1111-1111", -1))
fmt.Println(reg02.String())
}
<a name="igDRW"></a>
## learnRegexp_test.go
```go
package learnRegexp
import "testing"
func TestLearnRegexp(t *testing.T) {
LearnRegexp()
}
执行结果
GOROOT=C:\Program Files\Go #gosetup
GOPATH=C:\Users\ligz\go #gosetup
"C:\Program Files\Go\bin\go.exe" test -c -o C:\Users\ligz\AppData\Local\Temp\GoLand\___basicproject_learnRegexp__TestLearnRegexp.test.exe basicproject/learnRegexp #gosetup
"C:\Program Files\Go\bin\go.exe" tool test2json -t C:\Users\ligz\AppData\Local\Temp\GoLand\___basicproject_learnRegexp__TestLearnRegexp.test.exe -test.v -test.paniconexit0 -test.run ^\QTestLearnRegexp\E$ #gosetup
=== RUN TestLearnRegexp
true <nil>
\\\.\+\*\?\(\)\|\[\]\^\$
0
[0 1]
[0 1 0 1 2 3 4 5 6 7 8 9 1 2 3]
010
[010 123456789]
[010 123456789 234]
010
[010 123456789]
[010 123456789 123]
xxx-xxx-xxx
true
false
[010 11111 1111 1111]
-
--- PASS: TestLearnRegexp (0.00s)
PASS
进程 已完成,退出代码为 0