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 |
[] |
可选字符 |
{} |
重复次数 |
() |
分组,在后面的子匹配特别有用 |
网友评论