关于golang regexp正则的使用方法

今天正好看到golang的正则模式,就针对常用的几个正则模式写个分享。 正则的基础我就不多说了,用法和原理都那么一回事。 Regexp也是兼容贪婪、非贪婪模式的匹配。 

该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新

http://xiaorui.cc/?p=2982

下面是golang regexp模式的几个用法.  regexp本身是含有各种正则的标准用法,只是对于我来说关注的就这么几个。 

#http://xiaorui.cc

#找到索引位置
func (re *Regexp) FindIndex(b []byte) (loc []int)
#替换英文成小写
func (re *Regexp) ReplaceAllStringFunc(src string, repl func(string) string) string
#替换字符串
func (re *Regexp) ReplaceAllString(src, repl string) string
#匹配查找正则模式
func (re *Regexp) FindSubmatch(b []byte) [][]byte

下面是golang regexp的具体使用模式.

#http://xiaorui.cc

package main

import (
	"fmt"
	"regexp"
	"strings"
)

func IsPhone(ip string) (b bool) {
	if m, _ := regexp.MatchString("1[0-9]{10,}", ip); !m {
		return false
	}
	return true
}

func main() {
	src := "i LoVe You , xiaorui.cc 13684390231 ,i like tornado lang, golang 正则 . shell zsh golang bash c+ java jsp php"

	//转换成小写
	re, _ := regexp.Compile("\\w*")
	src = re.ReplaceAllStringFunc(src, strings.ToLower)
	fmt.Println(src)

	//替换所有数字
	re, _ = regexp.Compile("\\d*")
	src = re.ReplaceAllString(src, "")
	fmt.Println(src)

	//判断是否是手机号码
	fmt.Println(IsPhone("13684390231"))

	one, _ := regexp.Compile("xiao")
	index := one.FindIndex([]byte(src))

	fmt.Println("FindIndex", index)

	one1, _ := regexp.Compile("正则")
	index1 := one1.FindIndex([]byte(src))

	fmt.Println("FindIndex", index1)

	//第一个元素是匹配的全部元素,第二个元素是第一个()里面的
	re2, _ := regexp.Compile("zsh\\s(\\w*)\\sbash")
	submatch := re2.FindSubmatch([]byte(src))
	for _, v := range submatch {
		fmt.Println(string(v))
	}

	// fmt.Println(strings.TrimSpace(src))
}

上面这段golang正则代码运行后的结果:

[ `go run s.go` | done: 791.092445ms ]
  i love you , xiaorui.cc 13684390231 ,i like tornado lang, golang 正则 . shell zsh golang bash c+ java jsp php
  i love you , xiaorui.cc  ,i like tornado lang, golang 正则 . shell zsh golang bash c+ java jsp php
  true
  FindIndex [13 17]
  FindIndex [54 60]
  zsh golang bash
  golang

golang正则用法就这样了,这正则本来也没啥说的。 golang的doc已经说的例子和函数说明已经很明确了。 

END.


大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

邮箱地址不会被公开。 必填项已用*标注