Java regex tutorial:
refer : http://www.mkyong.com/tutorials/java-regular-expression-tutorials/
几个理解点:
(1)[^abc]:任何字符,除了 a、b 或 c(否定)
(2) . 表示任意字符
X? 0次或1次
X* 0次或多次
X+ 1次或多次
(3) (.+?) 匹配任何东西
(4) Reluctant 数量词 (勉强)
X?? X,一次或一次也没有
X*? X,零次或多次
X+? X,一次或多次
从前往后匹配,从输入字符串的开始处开始,因此每次勉强地吞噬一个字符来寻找匹配,最终它们会尝试整个输入的字符串。
(5) Greedy 数量词 (贪婪)
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
读入整个串,从后往前匹配。
(6)Possessive 数量词 (侵占)
X?+ X,一次或一次也没有
X*+ X,零次或多次
X++ X,一次或多次
侵占量词始终是吞掉整个输入的字符串,尝试着一次(仅有一次)匹配。不像贪婪量词那样,侵占量词绝不会回退。
(7) 捕获组:
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1 ((A)(B(C))) 2 (A) 3 (B(C)) 4 (C)
组零始终代表整个表达式。
以 (?) 开头的组是纯的非捕获 组,它不捕获文本,也不针对组合计进行计数。
捕获组作用:获得匹配结果指定组group.