正則表示式
匹配純文字
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/