正则表达式
关于正式表达式
参考资料: http://events.jianshu.io/p/dc3dfb98dfbb
查找匹配类的规则
标识符 | 解释 | 示例 |
^ | 匹配行首 | |
$ | 匹配行末 | |
\< | 匹配词首 | |
\> | 匹配词末 | |
^$ | 匹配空行 | |
\B | 匹配非边界 |
aajavabb; 用法可以是: \Bjava, java\B, \Bjava\B |
匹配次数的规则
标识符 | 解释 | 示例 |
. | 任意字符 | |
\? | 出现0次或一次 | javaxx : (java)? |
\+ | 至少出现一次 | |
* | 任意次数 | |
\{m\} {m} | 出现m次 | javajavajava: (java){2} |
\{m,\} {m,} | 至少m次 | javajavajava: (java){2,} |
\{,n\} {,n} | 至多n次 | javajavajava: (java){,3} |
\{m,n\} {m,n} | m 到 n 次 | javajavajava: (java){2,3} |
常用符号
标识符 | 解释 | 示例 |
[[:alpha:]] | 匹配任意大小写字母,所有的字母 | [a-zA-Z] |
[[:lower:]] | 小写字母 | [a-z] |
[[:upper:]] | 大写字母 | [A-Z] |
[[:digit:]] | 匹配0到9之间的任意单个数字 | [0-9] |
[[:alnum:]] | 匹配任意数字或字母 | [A-Za-z0-9] |
[[:space:]] | 匹配任意空白字符,包括"空格"、"tab键"等。 | |
[[:punct:]] | 匹配任意标点符号 | |
[] | 匹配指定范围内的任意单个字符,如[agh]表示只要匹配上"a","g", "h"的任意一个都算匹配上。 | |
[^ ] | 和[]相反,表示指定范围外的任意单个字符 |
贪婪与懒惰
比如这个字符串:aaabbb001002
贪婪(默认): aa.*00 —— 会匹配到 aaabbb001002 (黄色部分)
懒惰:aa.*?00 —— 会匹配到 aaabbb001002(黄色部分)
虽然贪婪是默认的匹配,但更多时候,我们想到的 “最小匹配”, 也就是懒惰的匹配方式。