Chinaunix首页 | 论坛 | 博客
  • 博客访问: 56716
  • 博文数量: 33
  • 博客积分: 1660
  • 博客等级: 上尉
  • 技术积分: 325
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-31 09:44
文章分类
文章存档

2011年(10)

2010年(23)

我的朋友
最近访客

分类:

2010-06-08 13:11:42

[root@localhost shell]# echo 1123|grep -Po '1|12|123'
1
1
[root@localhost shell]# echo 1123|grep -Eo '1|12|123'
1
123
 
 
[root@localhost ~]# echo jwefaabfwef| grep -Eo "aab|aa"
aab
[root@localhost ~]# echo jwefaabfwef| grep -Eo "aa|aab"
aab
[root@localhost ~]# echo jwefaabfwef| grep -Eo "aab?" 
aab
[root@localhost ~]# echo jwefaabfwef| grep -PEo "aab?"
grep: conflicting matchers specified
[root@localhost ~]# echo jwefaabfwef| grep -Po "aab?"
aab
[root@localhost ~]# echo jwefaabfwef| grep -Po "aab|aa"
aab
[root@localhost ~]# echo jwefaabfwef| grep -Po "aa|aab"
aa
 
-o选项会进行多轮匹配
后边一轮匹配是在前一轮匹配后剩下的字符串
 
二个都是NFA,不过是二种nfa,
grep -E是posix 扩展正则,
grep -P是perl正则,
只要是nfa,都有刚才潜挺说的贪婪特性
不过贪婪不完全能解释这个问题
还是要多不同程序的正则处理算法上来考虑
perl正则是传统nfa,在多选结构上(再强调下呵,是在多选结构上)是有顺序特性的,左边起,匹配了就结束了
posix正则,对于多选结构(再强调下,是多选结构),就算左边匹配了,还会把能匹配的最长选项匹配出来
阅读(1500) | 评论(0) | 转发(0) |
0

上一篇:300个 0

下一篇:shell 大小写替换

给主人留下些什么吧!~~