zoukankan      html  css  js  c++  java
  • 正则表达式学习之-入门知识

    正则表达式定义:

       Regular Experssion是强大、便捷高效的 文本处理工具。正则表达式本身,加上如同一本袖珍编程语言的通用模式表示法(general patten notation),赋予使用者描述和分析文本的能力,配合上特定工具提供的额外支持,正则表达式能够添加、删除、分离、叠加、插入和修整各类型的文本和数据。

    正则表达式解决的实际问题:

    1. 多文件单词复杂条件查找。
    2. 文本过滤
    3. 条件匹配

    检索文本工具Egrep:

    1. 使用范例:egrep '^(From|Subject):' mailbox-file:匹配邮件文件的开头是from,subject,date开头的行,目的是取到并生成一个邮件列表
    2. 邮件内容:mail-01.txt
      From:link
      Subject:端午节祝福邮件
      Date:2019-06-07
      
      这里是邮件正文...
    3. 实际效果:
      ZBMAC-7ac72269c:Documents link$ egrep '^(From|Subject|Date):' mail-01.txt
      From:link
      Subject:端午节祝福邮件
      Date:2019-06-07
      ZBMAC-7ac72269c:Documents link$
    4. 表达式解释:^脱字符,是正则表达式的元字符之一,表示匹配文本的开头。()限定表达式的作用范围。| 表示'或者'的意思。

    元字符知识:

    行的起始与结束:

    1. 在检查一行文本时,^代表一行的开始,$代表一行的结束。
    2. 读者最好养成按照字符来理解正则表达式的习惯:比如,^cat匹配的是以c作为一行的第一个字符,紧接着一个a紧接着一个t的文本。

    字符组

    1. 匹配若干字符之一:[abc],表示可以匹配的是a,b,或者c。
    2. 例:'<H[123456]>'用来匹配<H1>、<H2>、<H3>至<H6>标签。
    3. 字符组元字符‘-’表示一个范围。上边的例子可以改为'<H[1-6]>',连字符作为开头时,不是元字符。
    4. [a-zA-z]同样是表示一个范围。注意:只有在字符组内,'-'才是元字符。
    5. 排除型字符组:[^...] ,当脱字符^在字符组内是,表示匹配字符组中未列出的字符。

    匹配任意字符:

    1. '.'点,匹配任意字符。
    2. 但在字符组中,.不是元字符。注意:字符组的里边和外边,元字符的定义和意义是不一样的。

    单词分界符:

    1. '<'和'>'
    2. 大于号小于号本身不是元字符,只有跟斜杠结合后才是元字符。
    3. 不是所有的版本egrep都支持该元字符。

    元字符的总结:

    匹配单个字符的元字符

    . 点号 匹配单个任意字符
    [...] 字符组 匹配单个列出的字符
    [^...] 排除型字符组 匹配单个未列出的字符
    char 转义字符 如果char是元字符,或者转义序列无特殊含义时,匹配char对应的普通字符

    提供计数功能的元字符

    问号 容许匹配一次,但非必须
    * 星号 可以匹配任意多次,也可能不匹配
    + 加号 至少需要匹配一次,至多可能任意多次
    {min,max} 区间量词(非所有版本egrep都支持) 至少需要min次,至多容许max次

    匹配位置的字符

    ^ 脱字符 匹配一行的开头位置
    $ 美元符 匹配一行的结束位置
    < 单词分界符(非所有版本egrep都支持) 匹配单子的开始位置
    > 单词分界符(非所有版本egrep都支持) 匹配单词的结束位置
    其它元字符
    | alternation 匹配任意分隔的表达式
    (...) 括号 限定多选结构的范围,标注量词作用的元素,为反向引用"捕获"文本。
    1,2,... 反向引用(非所有版本egrep都支持) 匹配之前的第一、第二组括号内的字符表达式,匹配的文本

      文章属于读《精通正则表达式》一书的笔记,写的相对比较粗略,书中描述的比较细致,整个入门就占用的一章的笔墨,但是对于没有一点基础的非常适合。这里列出了正则表达式的元字符,掌握了这些,应对常用的正则表达式的书写基本够用了。

      比较受用的思想就是:注意正则表达式是以字符为单元的,所有的元字符限定权限都是作用于前一个字符或者表达式。

    正则表达式术语汇总

      正则:regex(regular expression)

      匹配:matching

      元字符:metacharacter

      流派:flavor

      子表达式:subexpression

      字符:character

  • 相关阅读:
    zabbix(三)网页操作
    zabbix(二)安装客户端
    zabbix(一)安装服务端
    python操作git
    elasticsearch之match
    elasticsearch之查询的两种方式
    Git 命令集合啦
    Django contenttype 组件
    Django 中 related_name/related_query_name 的区别
    Django中的CharField 和 FileField 主要讲FileField
  • 原文地址:https://www.cnblogs.com/sunlightlee/p/10993773.html
Copyright © 2011-2022 走看看