• 正则表达式


    第1章 正则表达式

    1.1 什么是正则

    特殊符号表示文字 文本

    ^ 开头

    [0-9] 数字

    1.2 作用

     提高效率 省事

    1.3 分类

    基础正则表达式

    ^ $  ^$  .  *  .*  [0-9]  [^0-9]

    扩展正则表达式

    |  ()  +  {}  ?

    1.4 准备

    1. 预警-中文符号
    2. grep/egrep

    cat >>/etc/profile<<EOF
    alias grep='grep --color=auto'
    alias egrep='egrep --color=auto'
    EOF
    source /etc/profile      给找到的内容加上红色

    1.5 基础正则表达式

    环境准备-创建oldboy.txt内容如下

    I am oldboy teacher!
    I teach linux.
    I like badminton ball ,billiard ball and chinese chess!
    my blog is http://oldboy.blog.51cto.com


    our site is http://www.etiantian.org
    my qq num is 49000448.
    not 4900000448.
    my god ,i am not oldbey,but OLDBOY!

    1.   ^oldboy 以oldboy开头的行 以....开头的行

    [root@dzc oldboy]# grep "^m" oldboy.txt

    my blog is http://oldboy.blog.51cto.com

    my qq num is 49000448.

    my god ,i am not oldbey,but OLDBOY!

        2.  $  m$  以m结尾的行 以.....结尾的行

    [root@dzc oldboy]# grep "m$" oldboy.txt

    my blog is http://oldboy.blog.51cto.com       注意每行的最后不要有空格,否则找不到内容   

      3. ^$ 空行 这一行里面什么符号都没有

    [root@dzc oldboy]# grep -n "^$" oldboy.txt    显示文件的空行并显示行号

      4. .(点) 任意一个字符

    [root@dzc oldboy]# grep "oldb.y" oldboy.txt

    I am oldboy teacher!

    my blog is http://oldboy.blog.51cto.com

    my god ,i am not oldbey,but OLDBOY!

    [root@dzc oldboy]# grep -o "oldb.y" oldboy.txt     -o只输出文件中匹配到的部分。

    oldboy

    oldboy

    oldbey   

      5.  撬棍 转义字符 脱掉马甲打回原形   

    找出文件中以小数点(.)结尾的行

    [root@dzc oldboy]# grep -n ".$" oldboy.txt

    2:I teach linux.

    6:my qq num is 49000448.

    7:not 4900000448.

      6. * 前一个文本连续出现了0次或1次以上

    0000

    连续出现了0次 就是没有出现

    贪婪性---能有多少,显示多少

    [root@dzc oldboy]# grep -o "0*" oldboy.txt

    000

    00000

    7   .* 所有内容 包括空行

    (所有) 连续出现的时候 贪婪性

    [root@dzc oldboy]# grep "^.*o" oldboy.txt

    I am oldboy teacher!

    I like badminton ball ,billiard ball and chinese chess!

    my blog is http://oldboy.blog.51cto.com

    8   [abc] 筐 表示一个整体 相当于是一个字符 a或b或c

    [root@dzc oldboy]# grep "[a-z]" oldboy.txt     找小写字母

    I am oldboy teacher!

    I teach linux.

    I like badminton ball ,billiard ball and chinse chess!

    [root@dzc oldboy]# grep "[a-zA-Z]" oldboy.txt      找大小写的字母

    I am oldboy teacher!

    I teach linux.

    I like badminton ball ,billiard ball and chinse chess!

    9   [^abc] 筐 表示一个整体 排除a或排除b或排除c

    [root@dzc oldboy]# grep "[^acb]" oldboy.txt

    1.5.1 grep -v 排除 [^abc]

    grep -v 排除行

    [^abc] 字符 文字

    1.5.2 练习1:以大写字母开头的行

    [root@dzc oldboy]#  grep "^[A-Z]" oldboy.txt

    1.5.3 练习2:以小写字母结尾的行

    [root@dzc oldboy]# grep "[a-z]$" oldboy.txt

    1.5.4 练习3:以 m或n或o开头的 并且以  m或g 结尾的行

    [root@dzc oldboy]# grep "^[mon].*[mg]$" oldboy.txt

    1.5.5 小结

      特殊符号-通配符-基础正则表达式

    1.特殊符号

    &&  >>   >  / $ .   ..  ~  |   !  #

    2.通配符* {} 

    3.正则

    1)按照一行

    2)^ $ ^$  .*  []

    1.6 扩展正则表达式

    1.6.1  + 前一个字符连续出现了一次或一次以上

    连续出现 -- 重复

    [root@oldboyedu-40-nb oldboy]# egrep  "0+" oldboy.txt

    my qq num is 49000448.

    not 4900000448.

     

    [root@oldboyedu-40-nb oldboy]# egrep -o  "0+" oldboy.txt

    000

    00000

    补充:

    grep -o grep命令每次找到的东西,grep执行过程 但是不会显示空行

    1.6.2 取出文件中连续出现的大写字母取出来

    [root@dzc data]# egrep -o "[A-Z]+" oldboy.txt

    I

    I

    I

    OLDBOY

    [root@dzc data]# egrep -o "[A-Z]{2,6}" oldboy.txt

    OLDBOY

    1.6.3  | 或者

    [root@dzc data]# egrep "oldboy|oldbey" oldboy.txt

    I am oldboy teacher!

    my blog is http://oldboy.blog.51cto.com

    my god ,i am not oldbey,but OLDBOY!

    1.6.4  () 小括号里面的内容是一个整体 相当于是一个字符 反向引用

    [root@dzc data]# egrep "oldb(o|e)y" oldboy.txt

    I am oldboy teacher!

    my blog is http://oldboy.blog.51cto.com

    my god ,i am not oldbey,but OLDBOY!

    1.6.5 反向引用

    1. 先把你要的内容保护起来 ...(你要的内容)...
    2. 在使用 1 2 3

    [root@dzc data]# echo 123456 |sed -r 's#..(..)..#1#g'

    34

    1.6.6  {}   0{n,m}取出0连续出现最少n次,最多m次

    [root@dzc data]# egrep "0{2,3}" oldboy.txt

    my qq num is 49000448.

    not 4900000448.

    [root@dzc data]# egrep "0{2,4}" oldboy.txt

    my qq num is 49000448.

    not 4900000448.

     取出文件中连续出现3-6次的字母 

    [root@dzc data]# egrep "[a-zA-Z]{3,6}" oldboy.txt

    I am oldboy teacher!

    I teach linux.

    I like badminton ball ,billiard ball an chinese chess!

    my blog is http://oldboy.blog.51cto.com

    our site is http://www.etiantian.org

    my qq num is 49000448.

    not 4900000448.

    my god ,i am not oldbey,but OLDBOY!

    1.6.7 ? 前一个字符连续出现了 0次或1次

    [root@dzc data]# cat a.log

    good

    gd

    god

    goood

    [root@dzc data]# egrep "gd|god" a.log

    gd

    god

    [root@dzc data]# egrep "go?d" a.log

    gd

    god

    1.6.8 小结

    基础正则

    ^   $  ^$   .*  [abc]  [a-z]  [^abc]

    扩展正则表达式

     + | () {} ?

    基础正则与扩展正则

    egrep    sed -r    awk

    本博文中所使用的系统版本为: CentOS release 6.9 (Final) 内核版本为: 2.6.32-696.10.1.el6.x86_64 linux正在持续学习中,如有雷同请见谅!!!

  • 相关阅读:
    js--事件--事件代理
    bind call apply 的区别和使用
    自己手动用原生实现bind/call/apply
    HLSL GLSL CG着色语言比较
    AABB和OBB包围盒简介
    BSTR LPSTR LPWSTR CString VARIANT COleVariant variant t CC
    UE4蓝图简介
    3D MAX脚本原理
    VC中GetLastError 获取错误信息的使用
    最强偏振3D播放器TriDef 3D安装+全格式播放配置
  • 原文地址:https://www.cnblogs.com/dzc-/p/7812946.html
Copyright © 2020-2023  润新知