保持快乐,善于表达,敢于创新

regular expression and extend expression

上一篇 / 下一篇  2009-09-03 16:13:53 / 个人分类:Shell编程

基本格式:
^         行开始                   /^love/     以love开头的行 可以是lover, loveable等
$         行结尾                   / love$/    以love结尾的行
.         任意一个字符              /l..e/      可以是love, live等
*         0个或者多个前字符         /l*e/        是llllle 或者lle等
[]        字符组中的任一个          /[Ll]ove/   love or Love
[x-y]     字符范围内任一字符        /[a-z]ove/   任一小写字符后面是ove
[^ x-y]   除x-y字符范围内的任一字符  /[^a-z]ove/ 不是小写字母开头的后面是ove
\         转义                     /love\.]    love.

扩展:

\<        单词开始                 /\<love/             love开头的单词 不可以是loveable, lover等
\>        单词结尾                 /love\>/             love单词结尾
\(..\)    传值                    /\(love\)able\1rs/   \1表示括号里面的love的值, 所以loveablelovers
x\{m,n\}  字符个数匹配             x\{5,10\}            至少含有x字符数为5个到10个之间的行。

Egrep扩展

+                   一个或者多个前字符          [a-z]+ove    ove前面至少一个小写字母
?                   0个或者多个前字符           lo?e         lve或looe或loooooooe
a|b|c               或a或b或c                  love|Love    love或Love
(a|b)               字符组                     love(able|rs) loveable 或lovers
(..)(..)\1\2        模式                      同上, 只是少了\
x{m,n}              字符数                    同上

重要:
* 表示0个或多个前一个字符
/x*/ 表示0个x或者多个x字符
/*x/ 表示0个或者多个空格后面是x
/.*/ 表示任意多个字符
/[a-z]*/ 任意个小写字符
/[a-zA-Z0-9]/ 字符
/[^a-zA-Z0-9]/ 非字符
/[a-z]\{9\}/  至少含有9个连续的小写字符



grep,egrep, fgrep
egrep 'NEW|OLD' datafile
grep -E 'NEW|OLD' datafile
grep 'NEW\|OLD' datafile

egrep '(no)+' datafile   至少含有一个no的字符
grep -E '(no)+' datafile
grep '\(no\)+' datafile

fgrep 就是不需要转义, 里面是什么内容就是什么内容
fgrep '[A-Z]' datafile
grep -F '[A-Z]' datafile
搜索含有字符串"[A-Z]"的行


grep 搜索字符串时候可以用"", 也可以用'', 区别是''无法转义变量

grep "$PATH" file, 需要系统将$PATH转义为PATH的值




TAG: 正则表达式

 

评分:0

我来说两句

Open Toolbar