Chinaunix首页 | 论坛 | 博客
  • 博客访问: 48073
  • 博文数量: 7
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 229
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-08 13:45
文章分类

全部博文(7)

文章存档

2013年(7)

我的朋友

分类: 系统运维

2013-06-08 09:38:43

领宽断言(有的地方叫预搜索)可以从对字符串的搜索方向分为两部分来记忆:

表达式
名称
整个字符串的搜索方向
说明
(?=xxx)
先行断言
从右向左
判断字符串的右侧内容是否能满足给出表达式
(?!xxx)
负向先行断言
同上
判断字符串的右侧是否不能满足给出的表达式
(?<=xxx)
后发断言
从左向右
判断字符串的左侧是否满足给出的表达式
(? 负向后发断言
同上
判断字符串的左侧是否不能满足给出的表达式

零宽断言匹配的只是一个位置,取出的信息是这个位置之前或者之后的内容,例如:
root@ubuntu:~# echo "I'm singing while you'are dancing" | grep -oP '\b\w*(?=ing\b)'
sing
danc
在看下面这个例子:
root@ubuntu:~# echo "I'm singing while you'are dancing" | grep -oP '\b\w+ing\b'
singing
dancing
\b\w*(?=ing\b)匹配的是sing和ing中间的位置和danc和ing中间的位置,\b\w+ing\b匹配的是以‘    ing’结尾的整个单词.

root@ubuntu:~# echo "reading a book" | grep -oP '\b[a-z]{3}(?!k\b)'
rea
root@ubuntu:~# echo "reading a book" | grep -oP '(?<=read)\w*'
ing


待续.....

阅读(1254) | 评论(0) | 转发(0) |
0

上一篇:POSIX内置Shell变量

下一篇:没有了

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