当前位置: 首页 > news >正文

Linux入门之正则表达式

    REGEXP: Regular Expressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能
    程序支持:grep,sed,awk,vim, less,nginx,varnish等
    分两类:
        基本正则表达式:BRE
        扩展正则表达式:ERE
            grep -E, egrep
    正则表达式引擎:
        采用不同算法,检查处理正则表达式的软件模块
        PCRE(Perl Compatible Regular Expressions)
    元字符分类:字符匹配、匹配次数、位置锚定、分组
    查帮助:   man  7 regex

字符匹配:

    .    匹配任意单个字符

    []   匹配指定范围内的任意单个字符

    示例:[wang]   [0-9]    [a-z]   [a-zA-Z]

    [^]  匹配指定范围外的任意单个字符

    [:alnum:] 字母和数字

    [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z

    [:lower:] 小写字母    [:upper:] 大写字母

    [:blank:] 空白字符(空格和制表符)

    [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)

    [:cntrl:] 不可打印的控制字符(退格、删除、警铃...)

    [:digit:] 十进制数字 [:xdigit:]十六进制数字

    [:graph:] 可打印的非空白字符

    [:print:] 可打印字符

    [:punct:] 标点符号

匹配次数:

    用在要指定次数的字符后面,用于指定前面的字符要出现的次数
    * 匹配前面的字符任意次,包括0次,贪婪模式,尽可能长的匹配
        如:    a*                表示匹配0个或0个以上的a字符
               [[:lower:]]*      表示前面的字符出现0个或以上
    .* 任意长度的任意字符
    \? 匹配其前面的字符0或1次
        如:a\?            匹配:‘ ’ 或a
    \+ 匹配其前面的字符至少1次
        如:a\+            可以匹配:a或aa或aaa或……
    \{n\} 匹配前面的字符n次
    \{m,n\} 匹配前面的字符至少m次,至多n次
    \{,n\} 匹配前面的字符至多n次
    \{n,\} 匹配前面的字符至少n次

位置锚定:

    定位出现的位置
        ^ 行首锚定,用于模式的最左侧
        $ 行尾锚定,用于模式的最右侧
        ^PATTERN$  用于模式匹配整行
        ^$  空行
        ^[[:space:]]*$  空白行
        \< 或 \b 词首锚定,用于单词模式的左侧
        \> 或 \b 词尾锚定,用于单词模式的右侧
        \<PATTERN\> 匹配整个单词
    示例:
        grep –v “^#” /etc/fstab                 显示非#开头的行,包括空行
        grep “^[^#]” /etc/fstab                 显示非#开头的行,不包括空行,开头至少有一个字符
        grep “shutdown$” /etc/passwd            显示以shutdown结尾的行
        grep “^$” /etc/fstab                    显示空行
        df | grep “^/dev/sd”                    显示以dev/sd开头的行
        echo yyhellow-sdke | grep “\<hello”        显示以hello开头的单词字符串
        echo yya-sdlkfeowi | grep “hello\>”         显示以hello结尾的单词字符串
        echo lasdkj_hello_sdfk | grep “\<hello\>”       显示完成匹配hello的单词字符串
        ifconfig eth0 | grep -o '[0-9.]\{7,15\}' | head -1       截取IP地址
        echo "A123sloa123as9383" | grep '\(a\|A\)123'
        grep -o '\<[0-9]\+\>' /etc/redhat-release | head -1         获取centos系统版本号


分组:

    \(\) 将一个或多个字符捆绑在一起,当作一个整体处理,如:\(root\)\+
    分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, ...
        \1  表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
    示例:
        \(string1\(string2\)\)
            \1 :string1\(string2\)

            \2 :string2

后向引用:

    引用前面的分组括号中的模式所匹配字符,而非模式本身
    或者:\|
    示例:
        a\|b  a或b
        C\|cat  C或cat
        \(C\|c\)at  Cat或cat

egrep及扩展的正则表达式

    egrep = grep –E
    egrep [OPTIONS] PATTERN [FILE...]
    字符匹配:
        . 任意单个字符
        [] 指定范围的字符
        [^] 不在指定范围的字符
    次数匹配:
        *  匹配前面字符任意次
        ?  0或1次
        +  1次或多次
        {m}  匹配m次
        {m,n} 至少m,至多n次
    位置锚定:
        ^  行首
        $  行尾
        \<, \b 语首
        \>, \b 语尾
    分组:
        ()
    后向引用:\1, \2, ...
    或者:  a|b    a或b
           C|cat    C或cat
           (C|c)at  Cat或cat

 

相关文章:

  • 七、Linux入门之软件包管理
  • 七、Linux入门之磁盘存储和文件系统
  • 7、Linux入门之小练习
  • 十、Linux入门之Shell进阶
  • tekla钢结构算量_【BIM应用案例】钢结构第一楼:天津117大厦!
  • matlab 加入高频噪声_电路中共模噪声的产生和抑制机理
  • 类图中表达总体与局部的关系_游戏中的亲密关系表达
  • ppt流程图字体太小_PPT字体使用攻略,看这一篇文章就够了!
  • mediarecorder添加时间戳_LeetCode312.戳气球
  • 数据库建造_详细解答二级建造师考试哪些专业可以报
  • 8086的两种工作模式_心理学家说,人有2种思维模式,拥有成长型思维的人更容易成功...
  • indesign中如何锁定零点_什么是机器人零点标定?以kuka机器人为例
  • 魔道祖师电脑壁纸_网红图,手机屏锁全面屏壁纸
  • 四阶龙格库塔法的基本思想_韩非“法治”思想的道家渊源
  • android image调整尺寸_android ImageView 宽度设定,高度自适应
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【EOS】Cleos基础
  • 10个确保微服务与容器安全的最佳实践
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Android 控件背景颜色处理
  • angular组件开发
  • Django 博客开发教程 8 - 博客文章详情页
  • es6
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • JavaScript设计模式与开发实践系列之策略模式
  • Java编程基础24——递归练习
  • JS函数式编程 数组部分风格 ES6版
  • Making An Indicator With Pure CSS
  • Netty源码解析1-Buffer
  • vue中实现单选
  • 思考 CSS 架构
  • ​queue --- 一个同步的队列类​
  • ​人工智能书单(数学基础篇)
  • ​学习一下,什么是预包装食品?​
  • # 达梦数据库知识点
  • #QT(智能家居界面-界面切换)
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (ZT)出版业改革:该死的死,该生的生
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (强烈推荐)移动端音视频从零到上手(上)
  • (强烈推荐)移动端音视频从零到上手(下)
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (顺序)容器的好伴侣 --- 容器适配器
  • (一)SpringBoot3---尚硅谷总结
  • (译) 函数式 JS #1:简介
  • (正则)提取页面里的img标签
  • (转)http协议
  • (转载)从 Java 代码到 Java 堆
  • ***测试-HTTP方法
  • . NET自动找可写目录
  • .net refrector