正则表达式笔记

慢慢记录。因为使用频率的原因,这个东西学了忘忘了学。

基本正则表达式(regular expression)

cp /etc/passwd /home/axe/test(复制模版文件)

cd home/axe/test

1."."表示任意单个字符。

grep :...: passwd #匹配::之间有三个字符的行。

2."*"匹配前一个字符0次或者n次

grep 00* passwd #匹配含有0的行

3.".*"匹配多个字符

4."[]"匹配[]中的任一字符

grep :1[01]*: passwd

5.[x-y]匹配连续的字符串

[0-9],[a-z]

6."^"匹配字串的头

grep ^root passwd

7."$"匹配字串的尾

8."[^n]"匹配否定

9."\{n,\}"匹配前一个字符重复至少n次

"\{n,m\}"匹配前一个字符重复n-m次。

"\{n\}"匹配前一个字符重复n次

grep "o\{2,\}" passwd #(要加引号) 匹配o至少两次

grep "o\{1,2\}" passwd #匹配o1-2次

grep "o\{2\}" passwd #匹配o两次

扩展正则表达式(Extended Regular Expression)

linux常用工具支持扩展正则的有egrep awk等等。

1.{n,m} 等同于基本正则里的\{n,m\},匹配前一个字符n-m次

2.+ 等同于基本正则里的 \{1,\} 匹配前一个字符1次或者多次

3.? 等同于基本正则里的\{0,1\} 匹配前一个字符0次或者1次。

4.| 匹配逻辑或者 eg: egrep "axe|root" passwd

POSIX规范
[:alpha:] 字母字符

[:alnum:] 字母与数字字符

[:cntrl:] 控制字符

[:digit:] 数字字符

[:xdigit:] 16进制

[:punct:] 标点

[:graph:] 非空格字符

[:print:] 任何可以显示的字符

[:space:] 空白

[:blank:] 空格与tab

[:lower:] 小写字符

[:upper:] 大写字符

在linux里POSIX规范可以通过[]引用。举个栗子,grep --color [[:digit:]] passwd

GUN规范

主要是转义元字符

应用实例

匹配一篇文章中所有的单词book

egrep "(^| )[\"[({]*book[\"])}?.,;:'s]*($| )" file

细节:

1.book前可能出现的字符有 "{([ ,ps.此处双引号使用反斜杠转义。

2.book后可能出现的字符有"})].,?:'s

3.在book两边有空格或者行首行尾标志^和$

 

posted @ 2015-09-22 23:56  axeprpr  阅读(120)  评论(0编辑  收藏  举报