您的位置:首页 > 其它

正则表达式学习之-入门知识

2019-10-20 07:05 1261 查看

正则表达式定义:

   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

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: