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

  • 相关阅读:
    Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别
    用foreach遍历 datagridView 指定列所有的内容
    treeView1.SelectedNode.Level
    YES NO 上一个 下一个
    正则 单词全字匹配查找 reg 边界查找 精确匹配 只匹配字符 不含连续的字符
    抓取2个字符串中间的字符串
    sqlite 60000行 插入到数据库只用不到2秒
    将多行文本以单行的格式保存起来 读和写 ini
    将秒转换成时间格式
    richtextbox Ctrl+V只粘贴纯文本格式
  • 原文地址:https://www.cnblogs.com/sunlightlee/p/10993773.html
Copyright © 2011-2022 走看看