正则表达式总结

来源:互联网 发布:java连接数据库的url 编辑:程序博客网 时间:2024/05/17 04:14
. 匹配任意字符
\ 对字符转义
| 选择操作(或)
^ 行起始字符
$ 行终止
? 匹配0个或1个的量词
* 匹配0个或多个的量词
+ 匹配一次或多次的量词 grep要转义\
[ 字符组开始
] 字符组结束
{ 量词或代码的开始
} 量词或代码的结束
( 分组开始
) 分组结束

反斜杠后面加大写字符为小写字符的取反,比如\b为单词边界,\B为非单词边界
\b 单词边界  grep里要加引号
[\b] 退格符
\cx 控制字符
\d 数字
\dxxx 字符的十进制
\oxxx 字符的八进制
\x xx 字符的十六进制
\f 换页
\r 回车
\n 换行
\s 空白符
\t 水平制表符
\w 单词字符
\0 空字符

(?d) Unix中的行
(?i) 不区分大小写
(?J) 允许重复的名字
(?m) 多行
(?s) 单行
(?u) Unicode
(?U) 默认最短匹配
(?x) 忽略空格和注释
(?-...) 撤销设置或关闭选项

(\d)\d\1
第一个为分组,表示匹配第一个数字并将其捕获
\1表示对捕获的数字进行反向引用。

7+ 等同于 7{1,}
7* 等同于 7{0,}
7? 等同于 7{0,1}

懒惰量词:如果你想匹配最少而不是最多数目的字符,可以使用懒惰量词
?? 懒惰匹配0或1次 (其实就是0次)
+? 懒惰匹配1或多次 (其实就是1次)
*? 懒惰匹配0或1次 (其实就是0次)
{n}? 懒惰匹配n次 (其实就是n次)
{n,}? 懒惰匹配n或n次以上 (其实就是n次)
{m,n}? 懒惰匹配m到n次 (其实就是m次)

占有量词:匹配尽量多的。同懒惰量词相反。没有回溯,可能导致找不到匹配,因为一下次选定了所有输入,不再回头。
?+ 
++
*+
{n}+
{n,}+
{m,n}+

前瞻:
ancyent(?=marinere)
寻找每一行后面跟marinere的单词ancyent
反前瞻:
ancyent(?!marinere)
寻找每一行前面跟marinere的单词ancyent

参考:《学习正则表达式》
0 0
原创粉丝点击