正则表达式
用于对文件或文本的检测。
基本常用正则表
字符 | 含义 | 说明 |
---|---|---|
\ | 转义字符 | |
. | 匹配任意字符 | |
\d | 表示数字 | |
\D | 表示非数字 | |
\s | 空白符 | 空格,tab,换行,换页和回车 |
\S | 非空白符 | |
^ | 匹配以什么开始 | |
()? | 表示括号内的东西可有可无 | |
$ | 匹配输入字符结尾的位置 | 一行的开始 |
* | 匹配零次或多次 | |
+ | 匹配一次或多次 | |
{n} | 正好匹配n次 | |
{n,} | 至少匹配n次 | |
{n,m} | 至少匹配n次,至多匹配m次 | |
) ,( | 匹配左右括号 | |
| | 匹配两边中的一个 | |
[abc] | 匹配中括号内的任意字符 | |
[^abc] | 匹配中括号内的反向字符 | |
[a-z] | 范围匹配 | |
\b | 匹配边界字符 | 例如:er\b 匹配后面的er 词的边界 |
\B | 非字符边界匹配 | 与上面相反 |
\t | 匹配制表符 | |
\v | 匹配垂直制表符 | |
\w | 匹配任何单词 | 与[A-Z a-z 0-9] 等效 |
\W | 匹配任何非单词 |
正则表达式的使用
注意 Java与其它语言不同,它对反斜线\的处理不同:
其它语言:\\表示“我想要在正则表达式中插入一个普通的(字面上的)反斜线,请不要给它任何意义。”
Java语言:\\表示“我要插入一个正则表达式的反斜线,使后面的字符具有特殊的意义”
量词:
量词描述了一个模式吸收输入文本的方式:
- 贪婪型:量词总是贪婪的,除非有其他的选项被设置。
- 勉强型:用问号来指定,这个量词匹配满足模式所需要的最少字符数。
- 占有型:目前这种量词只有在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}+ | 至少n次,至多m次X |