zoukankan      html  css  js  c++  java
  • 正则表达式

    第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正在持续学习中,如有雷同请见谅!!!

  • 相关阅读:
    java Activiti 工作流引擎 SSM 框架模块设计方案
    自定义表单 Flowable 工作流 Springboot vue.js 前后分离 跨域 有代码生成器
    数据库设计的十个最佳实践
    activiti 汉化 stencilset.json 文件内容
    JAVA oa 办公系统模块 设计方案
    java 考试系统 在线学习 视频直播 人脸识别 springboot框架 前后分离 PC和手机端
    集成 nacos注册中心配置使用
    “感恩节 ”怼记
    仓颉编程语言的一点期望
    关于System.out.println()与System.out.print("\n")的区别
  • 原文地址:https://www.cnblogs.com/dzc-/p/7812946.html
Copyright © 2011-2022 走看看