匹配纯文本
Ben
Hello, my name is Ben. Please visit my website at http://www.forta.com
. 匹配任意字符(默认模式不匹配\n,单行模式可以匹配\n)
a.c
abc acc a2c
.a.\.xls
na1.xls na2.xls
前面两个点任意字符 ,最后一个转义点, . 和 \ 等都叫做元字符(metacharacter),表示这个字符有特殊含义,而不是字符本身的含义,如果我们要匹配元字符的话,我们需要对元字符进行转义
[] 字符集,对应位置可以是字符集中的任意字符,字符集中的字符可以逐个列出,也可以给出范围,如[abc]或[a-c] ,第一个字符如果是^则表示取反,如[^abc];
所有特殊字符在字符集中都失去原有的特殊含义。其中 - ] ^特殊,如果要使用 - 或 ] 或 ^ 可以在前面加上反斜杠转义。-放在最前,或者最后,]放在第一个字符,^不在第一个字符,都会失去原有意义
n\*123[*][1-9]
通过\转义或者字符集[] 元字符*失去原有意义
[nsl]a.\.xls
[nsl]表示n或者s或者l
[nsl]a[0123456789]\.xls
0到9任意一个
[nsl]a[0-9a-f]\.xls
字符区间0到9或者a到f
[ns]a[^0-9]\.xls
取非 不能是0-9
\d
数字0-9
\D 等于 [^\d]
非数字
\w [A-Za-z0-9_]
单词字符
\W 等于 [^\w]
非单词字符
\s
空白字符[<空格>\t\r\n\f\v]
\S 等于 [^\s]
非空白字符
*
匹配前一个字符0或无限次
+
匹配前一个字符1次或无限次
?
匹配前一个字符0次或1次
{m}
匹配前一个字符m次
{m,n}
匹配前一个字符m至n次
{n, }
至少匹配n次的写法为
{0 , m}
至多匹配m次的写法为
+ 等价 {1, }
* 等价 {0, }
? 等价 {0 , 1}
* + ? {n, } {m,n}
贪婪型元字符,尽可能长的去匹配
*? +? ?? {n, }? {m,n}?
懒惰型元字符,尽可能短的去匹配
\b
是一个位置匹配符,它用来匹配一个单词的边界位置
^
字符在这里用来匹配一个字符串开头位置的
$
字符用来匹配一个字符串的结束位置的
()
用() 括起来的叫做一个子表达式,括号里的内容被认为是一个整体,紧跟括号的数量限定符会作用于这个整体,通常在编程语言中利用子表达式语法捕获内容之后,被捕获内的内容会被存入一个数组,我们都是通过下标(即0, 1, 2, 3 ...)来访问这些内容的。(?s:re) 这个语法会把re指定为单行模式(即,在re中 . 可以匹配 \n 的), 同时不会对re匹配的内容进行捕获,如果我们需要捕获re中的内容的话,要在re的两端加上(), 即使用如下表达式 (?s:(re))
golang 使用正则表达式样例:
- 正则表达式在线测试 http://tool.chinaz.com/regex/
- 原始官方版本:https://code.google.com/p/re2/wiki/Syntax
- 国内好心人版本:http://www.sun190.com/2015/01/re2-%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/