ESSAY / NOTE

GO使用正则表达式

正则表达式: 能使用 string、strings、strcnov 包函数解决的问题,首选使用库函数。 其次再选择正则表达式。 ----字符: “.”: 匹配任意一个字符 "[ ]": 匹配 [ ] 内任意一个字符。 “-”:指定范围: a-z、A-Z、0-9 "^": 取反。 使用在 [ ] 内部。[^xy]8 [[:digit:]] ——> 数字 == [0-9] -----次数: “?”: 匹配 前面 单元出现 0-1次 “+”:匹配 前面 单元 出现 1-N次 “*”:匹配 前面 单元 出现 0-N次 “{N}”: 匹配 前面 单元 精确匹配 N 次 "{N,}": 匹配 前面 单元 至少匹配 N 次 "{N,M}": 匹配 前面 单元 匹配 N -- M 次。 ---- 单元限定符: “()”: 可以将一部分正则表达式,组成一个 单元,可以对该单元使用 数量限定符 Go语言使用正则: ---- 步骤: 1. 解析编译正则表达式: MustCompile(str string) *Regexp 参数:正则表达式: 建议使用“反引号”—— ` ` 返回值: 编译后的正则表达式 (结构体类型) 2. 提取需要的数据: func (re *Regexp) FindAllStringSubmatch(s string, n int) [][]string 参数1:待匹配的字符串。 参数2:匹配次数。 -1 表匹配全部 返回值: 存储匹配结果的 [ ][ ]string 数组的每一个成员都有 string1 和 string2 两个元素。 string1:表示, 带有匹配参考项的字符串。 【0】 string2:表示,不包含匹配参考项的字符串内容。【1】 ----- 提取网页标签数据: 举例: 提取
之中的数据 1)
(.*)
--> 可以提取div标签的内容 2) 对于 div 标签中 含有多行内容清空: 正则表达式:(?s:(.*?)) 示例
package main

import (
	"fmt"
	"regexp"
)

func main(){
	str := "abc a7c mfc cat aMc azc cba"

	//解析编译正则表达式
	//ret := regexp.MustCompile(`a.c`) // ``表示使用原生字符串
	//ret := regexp.MustCompile(`a[^a-z]c`)
	ret := regexp.MustCompile(`\d+\.\d+`) //匹配小数

	//提取需要信息
	alls := ret.FindAllStringSubmatch(str,-1)
	fmt.Println(alls)

}