正则表达式示例表
字 符 意 义 示 例
* 任意长度的字符串。 a* 表示: 空字符串、aaaa、a…
? 长度为0或者1的字符串。 a? 表示: 空字符串和a。
+ 长度为一个或者多个的字符串。 a+表示:a、aa、aaaaaa…
. 任意字符。 a. 表示:a后跟任意字符。
{} 代表上一规则重复数目、
{1,1,s}包含一组匹配花括号,里面有两个数字和一个字符,表示在指定次数范围内找到字符。 a{3}表示:三个a、
a{1,3}表示:一个到三个a、
a{3,} 表示:大于等于三个a、
{3,7,a}表示在3到7次重复范围内匹配字符a。
[] 集合,代表方括号中任意一个字符。 [ab] 表示:a或者b都可以、
[a-z] 表示:从a到z的字符。
() 组,代表一组字符。 (ab){2}表示:abab。
a/b 同时满足。 a/b表示:字符串a后跟字符串b才能满足要求。
a|b 并列,代表符合a或者符合b都可以 a|b表示: 字符串a或者字符串b都满足要求。
^ 如果放在开头表示代表该规则必须在字符串的开头,其他位置代表字符本身。
如果放在[]中的开头表示对该集合取反,其他位置代表字符本身。 ^a表示:a必须在字符串的开头、
[^a]表示:除了a以外的其他字符。
$ 如果放在最后表示该规则必须放在最后,其他位置代表字符本身。 a$表示:a必须在字符串最后。
\:s 正则表达式用 \:s 表示空格。 a\:sb 匹配 a b。
\:a 正则表达式用 \:a 表示字符与数字。 a\:a 匹配 ab、a6 等。
\:c 正则表达式用 \:c 仅表示字符。 a\:c 匹配 ac等,不匹配a1等。
\:p 正则表达式用 \:p 表示可打印字符。
\:D 正则表达式用 \:d 仅表示数字。 a\:c 匹配 a1等,不匹配ac等。
\:x00 正则表达式用 \:x00 表示ASCII字符。
\:r 正则表达式用 \:r 表示回车。
\:N 正则表达式用 \:d 表示换行。

一 正则表达式
基本元字符集及其含义
    ^     只只匹配行首
    $     只只匹配行尾
    *     只一个单字符后紧跟*,匹配0个或多个此单字符
    [ ]   只匹配[ ]内字符。可以是一个单字符,也可以是字符序列。可以使用-
            表示[ ]内字符序列范围,如用[ 1 - 5 ]代替[ 1 2 3 4 5 ]
    \     只用来屏蔽一个元字符的特殊含义。因为有时在shell中一些元字符有
           特殊含义。\可以使其失去应有意义
    .     只匹配任意单字符
pattern\      只用来匹配前面pattern出现次数。n为次数
pattern\m    只含义同上,但次数最少为n
pattern\    只含义同上,但pattern出现次数在n与m之间

二 grep 的用法
1 双引号引用
   在grep命令中输入字符串参数时,最好将其用双引号括起来
2 grep选项
   常用的grep选项有:
   -c 只输出匹配行的计数。
   -i 不区分大小写(只适用于单字符)。
   -h 查询多文件时不显示文件名。
   -l 查询多文件时只输出包含匹配字符的文件名。
   -n 显示匹配行及行号。
   -s 不显示不存在或无匹配文本的错误信息。
   -v 显示不包含匹配文本的所有行。

 -o Print each match, but only the match, not the entire line.

3 精确匹配
    使用grep抽取精确匹配的一种更有效方式是在抽取字符串后加\>。假定现在精确抽取48,则为"48\>"
三 grep和正则表达式
     使用正则表达式时最好用单引号括起来,这样可以防止grep中使用的专有模式与一些shell命令的特殊方式相混淆。
1 模式范围
    假定要抽取代码为484和483的城市位置,上一章中讲到可以使用[ ]来指定字符串范围,这里用48开始,
    以3或4结尾,这样抽出484或483。grep '48[34]' data.f
2 不匹配行首
     如果要抽出记录,使其行首不是48,可以在方括号中使用^记号,表明查询在行首开始。
     grep '^[^48]' data.f
3 匹配任意字符
   如果抽取以L开头,以D结尾的所有代码,可使用下述方法,因为已知代码长度为5个字符:
    grep 'L...D' data.f
4 日期查询
    一个常用的查询模式是日期查询。先查询所有以5开始以1 9 9 6或1 9 9 8结尾的所有记录。使用模式5..199[6,8].这意味着第一个字符为 5,后跟两个点,接着是199,剩余两个数字是6或8。
     grep '5..199[6,8]' data.f
    查询包含1998的所有记录的另外一种方法是使用表达式[0-9]\[8],含义是任意数字重复3次,后跟数字8,虽然这个方法不像上一个方 法那么精确,但也有一定作用。
5 使用grep匹配“与”或者“或”模式
    grep命令加- E参数,这一扩展允许使用扩展模式匹配。例如,要抽取城市代码为2 1 9或2 1 6,方法如下:
    grep -E '219|216' data.f
6 空行
   结合使用^和$可查询空行。使用- n参数显示实际行数:
    grep '^$' data.f
7 grep 与类名的使用
   类等价的正则表达式类等价的正则表达式
[[:upper:]]   [A-Z]               [[:alnum:]] [0-9a-zA-Z]
[[:lower:]]   [a-z]               [[:space:]] 空格或t a b键
[[:digit:]]   [0-9]                [[:alpha:]] [a-zA-Z]

grep和正则表达式的更多相关文章

  1. Linux grep与正则表达式

    grep命令         格式:grep [-acinv] [--color=auto] '查找字符串' filename -a 将binary文件以text文件的 -c 计算找到 ‘查找字符串’ ...

  2. grep与正则表达式,grep、egrep和fgrep

    grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串. ...

  3. 第5天(半天)【shell编程初步、grep及正则表达式】

    第5天(半天)[shell编程初步.grep及正则表达式] shell编程初步(01)_recv shell脚本:文本文件 #!:/bin/bash #!:/usr/bin/python #!:/us ...

  4. [Linux 006]——grep和正则表达式

    在使用系统时,我们或多或少的有一些搜索.查找的需求,必须要在文本中搜索某个关键字,或者过滤出文本中某些特定的行.grep 命令就为我们提供了这样一个功能,同时,grep 还可以使用正则表达式进行匹配, ...

  5. grep与正则表达式使用

    grep简介 grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.通常grep有三种版本grep.egrep(等同于grep -E)和fgrep.egrep为扩展的g ...

  6. grep用法详解:grep与正则表达式【转】

    转自:http://blog.csdn.net/hellochenlian/article/details/34088179 grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配 ...

  7. linux初级学习笔记十:linux grep及正则表达式!(视频序号:04_4)

    本节学习的命令:grep 本节学习的技能: grep对文本的匹配 正则表达式的使用 知识点十:grep及正则表达式(4_4) grep,egrep,fgrep: grep: 根据模式搜索文本,并将符合 ...

  8. grep使用正则表达式搜索IP地址

    递归搜索当前目录及其子目录.子目录的子目录……所包含文件是否包含IP地址 grep -r "[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit: ...

  9. Linux文本处理三剑客之grep及正则表达式详解

    Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...

随机推荐

  1. JQuery学习笔记--01

    JQuery使用的话,必做的一下件事就是下载JQuery库,才可以使用下载地址:http://jquery.com/ 下面就是引用JQuery库了: <script type="tex ...

  2. DOM&BOM笔记

    day01正课:1. DOM概述2. ***DOM树3. *查找 1. DOM概述: DHTML:动态网页技术的统称 DHTML=HTML+CSS+JS 鄙视题: HTML XHTML DHTML X ...

  3. Net Core 项目实战之权限管理系统(0)

    0 前言 Net Core 项目实战之权限管理系统(0) 无中生有   0 http://www.cnblogs.com/fonour/p/5848933.html 学习的最好方法就是动手去做,这里以 ...

  4. Spark On YARN内存分配

    本文转自:http://blog.javachen.com/2015/06/09/memory-in-spark-on-yarn.html?utm_source=tuicool 此文解决了Spark ...

  5. 转:Sharethrough使用Spark Streaming优化实时竞价

    文章来自于:http://www.infoq.com/cn/news/2014/04/spark-streaming-bidding 来自于Sharethrough的数据基础设施工程师Russell ...

  6. 用C#实现网络爬虫(一)

    网络爬虫在信息检索与处理中有很大的作用,是收集网络信息的重要工具. 接下来就介绍一下爬虫的简单实现. 爬虫的工作流程如下 爬虫自指定的URL地址开始下载网络资源,直到该地址和所有子地址的指定资源都下载 ...

  7. PS5穿越云层3D文字

    妈的,搜狗浏览器有时候会出问题,保存的内容找不到了…… 视图--显示参考线或者“显示额外内容”会取消或者加上参考线,后者功能更强一些,ctrl+D有时可以代替后者的功能,后者可以去掉蒙版的参考线,前者 ...

  8. 海园帮忙写的JQUERY功能,实现了我们想要的,我觉得有点屌哟~~

    需求就是为了可以在WEB在线更新代码期间,如果执行时间较长的话, 就在提交按钮之后,按钮变为灰色. 同时,一个DIV里每隔两秒刷新输出. 当更新完成之后(检测文档中的关键字串),按钮变为可提交状态~~ ...

  9. XML SAX解析

    SAX是一种占用内存少且解析速度快的解析器,它采用的是事件驱动,它不需要解析完整个文档,而是按照内容顺序,看文档某个部分是否符合xml语法,如果符合就触发相应的事件.所谓的事件就是些回调方法( cal ...

  10. 多线程Two-Phase Termination Pattern两阶段终止模式

    一 Two-Phase Termination Pattern Two-Phase Termination Pattern,指的就是当希望结束一个线程的时候,送出一个终止请求,但是不会马上停止,做一些 ...