golang规则表达式的写法
matched, err := regexp.MatchString(`a.b`, "aaxbb")
or
re1, err := regexp.Compile(`regexp`) // error if regexp invalid
re2 := regexp.MustCompile(`regexp`) // panic if regexp invalid
就不细说了,这里主要总结regexp的写法。
- 选择
表达式 | 含义 |
---|---|
xy | 连接,x后面跟y |
x|y | 选择,或者x或者y |
xy|z | 选择,xy或者z,它等同于(xy)|z |
xy* | x后面跟0个或者多个y,等同于x(y*) |
- 重复
表达式 | 含义 |
---|---|
x* | x重复0次或多次 |
x+ | x重复1次或多次,即至少一次 |
x? | x重复0次或1次,最多一次 |
x{n} | x重复精确的n次 |
- 字符含义
表达式 | 含义 |
---|---|
. | 任意字符 |
[ab] | 字符a或者字符b |
[^ab] | 不是a和b的其他任意字符 |
[a-z] | a和z之间的任意字符 |
[a-z0-9] | a和z以及0和9之间的任意字符 |
对于字母和数字还有一种表达方式,虽然我不经常用,但还是列在这里吧:
表达式 | 含义 |
---|---|
\d | 0到9之间的数字,等价于 [0-9] |
\D | 非数字,等价于[^0-9] |
\s | 空格字符,包括tab,回车换行,等价于:[\t\n\f\r ] |
\S | 非空格字符,[^\t\n\f\r ] |
\w | 单词字符,等价于[0-9A-Za-z_] |
\W | 非单词字符,等价于[^0-9A-Za-z_] |
- 特殊字符
特殊字符主要包括这些:\^$.|?*+-[]{}()
,都是有特殊含义的,如果规则表达式中需要匹配这个特殊字符,则需要转义。
字符 | 含义 |
---|---|
\ | 转义字符,它后面的字符不转义,按字面文本处理 |
^ | 文本开头 |
$ | 文本结束 |
. | 任意字符 |
| | 选择符 |
? | 0次或1次重复 |
* | 0次或多次重复 |
+ | 1次或多次重复 |
- | 连续字符, 例如a-z,0-9 |
[] | 可选字符 |
{} | 重复次数 |
() | 分组,在后面的子匹配特别有用 |
有疑问加站长微信联系(非本文作者)