您的位置:首页 > 运维架构 > Linux

linux学习笔记(一)---正则表达式

2012-10-11 22:55 211 查看
  正则表达式就是处理字符串的方法,并且是以行为单位进行字符串处理的。通常在linux中,进行文字的"搜索/替换"工作。正则表达式只是一种处理字符串的标准表示方法,在linux中支持这种方法的工具有vi,sed,awk,grep等。

  正则表达式的特殊字符:

  Regular Expression字符       范例      含义

  ^(匹配行首)            ^word     匹配以word开头的行

  $(匹配行尾)             word$     匹配以word结尾的行

  \w                        匹配字母或数字或下划线或汉字

  \s                        匹配任意的空白符

  \d                        匹配数字

  \b                        匹配单词的开始或结束

  .(匹配任意一个字符)         hel.o      匹配以hel开头,o结尾的长度为5的字符串

  \(转义字符)             \.       匹配字符.

  *(匹配任意多个前一个字符)      hello*     匹配hell,hello....hellooooo......

  \{n,m\}(匹配n到m个前一个字符)  hello\{1,3\}  匹配hello,helloo,hellooo。 特殊情况:\{n\}:匹配n个前一个字符。\{n,\}:匹配至少n个前一个字符

  [](匹配字符集合中的一个)      [a-zA-Z]    匹配a-z或A-Z中的一个字符

  [^](匹配不是字符集合中的一个字符)  [^a-zA-Z]   匹配不是a-z和A-Z的一个字符

  

  另外有四个扩展的正则表达式特殊字符:

  Regular Expression字符       范例      含义

  +(匹配1个或以上个前一个字符)   hello+     匹配hello,helloo....

  ?(匹配0个或1个前一个字符)     go?d      匹配gd或god

  |(匹配数个字符串中的一个)      god|good    匹配god或good

  ()(匹配用户组,一般与|合用)     re(a|o|e)d    匹配read或reed或reod

  需要说明的是()会进入子shell,并且(!)在正则表达式中不是特殊字符。

  以常用的正则表达式程序工具grep来说,其全称是Global search Regular Expression and print out the line,即全局搜索正则表达式并打印出行。

  其格式如下:grep -[option] '搜索字符串' 文件名

  参数说明如下:

  -a    在二进制文件中以,文本文件方式搜索数据

  -c    只输出匹配的行的数量

  -i     搜索时忽略大小写

  -h    查询多文件时不显示文件名

  -l    只列出符合匹配的文件名,而不输出匹配行

  -n    显示所有匹配行并列出行号

  -s    不显示不匹配或无匹配文本的错误信息

  -v    显示不包含匹配文件的所有行

  -w    匹配整词,忽略regular expression字符的特殊含义

  -x    匹配整行,必须整行内容匹配

  -r    递归搜索,不仅搜索该目录,还搜索子目录

  -q    不输出任何结果,以退出状态表示搜索是否成功

  -b    打印匹配行距文件首部的偏移量,以字节为单位

  -o    与-b结合使用,打印匹配单词距文件首部的偏移量,也是以字节为单位

  -E    支持扩展正则表达式,等价于egrep

  -F    不支持正则表达式,按字面意思进行匹配,等价于fgrep

  待续......

  这里说明的挺详细:/article/4778776.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: