<精通正则表达式>学习笔记 第一章

正则表达式由两种字符组成:元字符 和 普通字符(文字)

行的开始和结束:
脱字符号 ^ :行的开始 —— ^cat 只寻找行首的cat
美元符号 cat 只寻找行尾的 cat

正则表达式结构体:[ ] ,也就是字符组,里面是“或”的意思,应该是只能出现一个!前面的成立,后面的就不继续了。
在字符组内部,- 表示连字符 < H[123456]> 和 < H[1-6]>的意思是一样的
注意:只有在字符组内部,- 才是元字符,否则就简单是一个连字符号
如果 - 出现在字符组的开头,例如 [-abc],那么就表示简单的一个连字符号。
同理,点号 和 问号 通常被认为元字符处理,但是在字符组中并不是这样。
[0-9A-Z_!.?] : 元字符之后两个 - ,其他都是普通文本字符

排除性字符组:[^1-6] 不希望出现任何 1-6 之间的数字
像英语单词一样,在不同的语境下的语义是不一样的,元字符也是如此。

用点号(.)匹配任意字符
记住:字符组里面和外面,元字符的定义和意义是完全不一样的。
写正则表达式时候,我们要在对欲检索文本的了解程度和检索精确性之间求得平衡。
egrep ‘gr(.)y’ zhengze.txt

多选结构
| “或”的意思
gr[ea]y : gray|grey 或者是 gr(e|a)y
正常情况下,括号也是元字符
egrep ‘gr(a|e)y’ zhengze.txt –color=auto

字符组基本上是一种独立的微语言(例如对于元字符,有他们自己的约定),而多选结构是“正则表达式语言主体”的一部分。

注意:egrep ‘^(Date|email|name):’ zhengze.txt 和 egrep ‘^Date|email|name:’ zhengze.txt 的区别
(不过经我测验,在我的环境下,这二者是一致的)

忽略大小写: -i 参数
egrep -i ‘^Date|email|name:*’ zhengze.txt

单词分解符:\< 开头, >结尾
注:可能有的egrep不支持

[ ^x] :
不是:只有这个位置不是x才匹配(可以匹配空行)
而是:匹配一个不是x的字符(不可以匹配空行)

选项字符 ?(控制紧邻元素)
把它加在一个字符的后面,就表示此处允许出现这个字符,不过他的出现并非匹配成功的必要条件。
egrep ‘date?’ zhengze.txt 表示:可能匹配 date 或者 dat任意字符(包括空)

其他量词:重复出现
…*:表示之前紧邻的元素出现一次或多次,或者不出现。意思:匹配尽可能多的次数,如果实在无法匹配,也没关系
…+:匹配尽可能多的次数,但如果连一次都无法完成,就报告失败

规定重复出现的次数:区间{}

括号和反向引用
egrep ‘\<([a-z]+) +\1>’ zhengze.txt –color=auto
\1 可以代表:第一个括号匹配的内容

*转义:反斜杠 *

字符:字符在计算机领域是一个很有意思的单词。
一个字节所代表的单词取决于计算机如何解释。单个字节的值不会变化,但这个值所代表的字符却是由解释所用的编码来决定的。
例如:值为 64 和 53 的字节,在 ASCII 编码中分别代表了字符“@” 和 “5”,但在 EBCDIC编码中,则是完全不同的字符。

字节如何解释是编码的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值