对于一些简单的字符串,直接用String方法就能处理,可是对于复杂的,String方法就力不从心了,这时候正则表达式才是解决之道!正则表达式
一:正则表达式匹配规则spa
字符 | |
B | 指定字符B |
\xhh | 十六进制值为oxhh的字符 |
\uhhhh | 十六进制表示为oxhhh的Unicode字符 |
\t | 制表符Tab |
\n | 换行符 |
\r | 回车 |
\f | 换页 |
\e | 转义(Escape) |
字符类 | |
. | 任意字符 |
[abc] | 包含a、b和c的任何字符(和a|b|c做用相同) |
[^abc] | 除了a、b和c以外的任何字符(否认) |
[a-zA-Z] | 从a到z或从A到Z的任何字符(范围) |
[abc[hij]] | 任意a、b、c、h、i和j字符(与a|b|c|h|i|j做用相同)(合并) |
[a-z&&[hij]] | 任意h、i或j(交集) |
\s | 空白符(空格、Tab、换行、换页和回车) |
\S | 非空白符([^\s]) |
\d | 数字[0-9] |
\D | 非数字[^0-9] |
\w | 词字符[a-zA-Z0-9] |
\W | 非词字符[^\w] |
逻辑操做符 | |
XY | Y跟在X后面 |
X|Y | X或Y |
(X) | 捕获组(capturing group)。能够在表达式中用\i引用第i个捕获组 |
边界匹配符 | |
^ | 一行的起始 |
$ | 一行的结束 |
\b | 词的边界 |
\B | 非词的边界 |
\G | 前一个匹配的结束 |
量词code
量词描述了一个模式吸取输入文本的方式:ci
贪婪型:量词老是贪婪的,除非有其余的选项被设置。贪婪表达式会为全部可能的模式发现尽量多的匹配。致使此问题的一个典型理由就是假定咱们的模式仅能匹配第一个可能的字符组,若是它是贪婪的,那么它就会继续往下匹配。字符串
勉强型:用问号来指定,这个量词匹配知足模式所需的最少字符数。所以也称作懒惰的、最少匹配的、非贪婪的、或不贪婪的。table
占有型:目前,这种类型的量词只有Java语言中才可用。当正则表达式被应用于字符串时,它会产生至关多的状态,以便在匹配失败时能够回溯。而“占有的”量词并不保存这些中间状态,所以它们能够防止回溯。它们经常用于防止正则表达式失控,所以可使正则表达式执行起来更有效。引用
贪婪型 | 勉强型 | 占有型 | 如何匹配 |
X? | X?? | X?+ | 一个或零个X |
X* | X*? | X*+ | 零个或多个X |
X+ | X+? | X++ | 一个或多个X |
X{n} | X{n}? | X{n}+ | 刚好n次X |
X{n,} | X{n,}? | X{n,}+ | 至少n次X |
X{n,m} | X{n,m}? | X{n,m}+ | X至少n次,且不超过m次 |
须要注意的时在书写表达式X的时候,要用()括起来:例如X=abc X?应该表示为 (abc)?方法