快速学习正则表达式,不用死记硬背,示例让你通透(上篇)_脱字符

正则表达式识别的特殊字符包括:

.*[]^${}+?|()

如果要用某个特殊字符作为文本字符,就必须
转义
。在转义特殊字符时,你需要在它前面加一个特殊字符反斜杠(\)来告诉正则表达式引擎应该将接下来的字符当作普通的文本字符。

示例说明:

查找文本中的美元符,只要在它前面加个反斜线。

3.3 锚字符

默认情况下,当指定一个正则表达式模式时,只要模式出现在数据流中的任何地方,它就能匹配。有两个特殊字符可以用来将模式锁定在数据流中的行首或行尾。

3.3.1 锁定在行首

脱字符(
^
)定义从数据流中文本行的行首开始的模式。如果模式出现在行首之外的位置,正则表达式模式则无法匹配。

要用脱字符,就必须将它放在正则表达式中指定的模式前面。

脱字符会在每个由换行符决定的新数据行的行首检查模式。

示例解说:

只要模式出现在新行的行首,脱字符就能够发现它。

演示说明:

脱字符出现在正则表达式模式的尾部,sed编辑器会将它当作普通字符来匹配。

注意:

如果指定正则表达式模式时只用了脱字符,就不需要用反斜线来转义。但如果在模式中先指定了脱字符,随后还有其他一些文本,那么必须在脱字符前用转义字符。

3.3.2 锁定在行尾

跟在行首查找模式相反的就是在行尾查找。特殊字符美元符(
$
)定义了行尾锚点。将这个特殊字符放在文本模式之后来指明数据行必须以该文本模式结尾。

3.3.3 组合锚点

在一些常见情况下,可以在同一行中将行首锚点和行尾锚点组合在一起使用。在第一种情况中,假定你要查找只含有特定文本模式的数据行。

示例说明:

匹配文本中以test开头和以test结尾的行

将两个锚点直接组合在一起,之间不加任何文本,这样过滤出数据流中的空白行。

示例说明:

定义的正则表达式模式会查找行首和行尾之间什么都没有的那些行。由于空白行在两个换行符之间没有文本,刚好匹配了正则表达式模式。sed
编辑器用删除命令
d
来删除匹配该正则表达式模式的行,因此删除了文本中的所有空白行。

3.4 点号字符

特殊字符点号用来匹配除换行符之外的任意单个字符。它必须匹配一个字符,如果在点号字符的位置没有字符,那么模式就不成立。

示例解说:

这个例子很具有说明性的,为什么第一行无法匹配,而第二行和第三行就可以。第四行有点复杂。注意, 我们匹配了at,但在at前面并没有任何字符来匹配点号字符。其实是有的!在正则表达式中, 空格也是字符,因此at前面的空格刚好匹配了该模式。第五行证明了这点,将at放在行首就不 会匹配该模式了。

3.5 字符组

使用方括号来定义一个字符组。方括号中包含所有你希望出现在该字符组中的字符。然后可以在模式中使用整个组,就跟使用其他通配符一样。

示例说明:

匹配这个模式的单词只有
cat

hat
。还要注意以
at
开头的行也没有匹配。字符组中必须有个字符来匹配相应的位置。

在不太确定某个字符的大小写时,字符组会非常有用。如下示例:

字符组不必只含有字母,也可以在其中使用数字。

示例说明:

这个正则表达式模式匹配了任意含有数字
0

1

2

3
的行。含有其他数字以及不含有数字的

行都会被忽略掉。

示例说明:

正则表达式模式可见于数据流中文本的任何位置。经常有匹配模式的字符之外的其他字符。如果要确保只匹配五位数,就必须将匹配的字符和其他字符分开,要么用空格,要么像这

个例子中这样,指明它们就在行首和行尾。

3.6 排除型字符组

在正则表达式模式中,也可以反转字符组的作用。可以寻找组中没有的字符,而不是去寻找组中含有的字符。要这么做的话,只要在字符组的开头加个脱字符。

示例说明:

使用排除型字符组,正则表达式模式会匹配
c

h
之外的任何字符以及文本模式。由于空格字

符属于这个范围,它通过了模式匹配。但即使是排除,字符组仍然必须匹配一个字符,所以以
at开头的行仍然未能匹配模式。

3.7 区间

示例说明:

新的模式
[c-h]at
匹配了首字母在字母
c
和字母
h
之间的单词。这种情况下,只含有单词
at

的行将无法匹配该模式。

示例说明:

该字符组允许区间ac、hm中的字母出现在at文本前,但不允许出现d~g的字母。

3.8 特殊的字符组

除了定义自己的字符组外,
BRE
还包含了一些特殊的字符组,可用来匹配特定类型的字符。

  • [[:alpha:]]          匹配任意字母字符,不管是大写还是小写
  • [[:alnum:]]         匹配任意字母数字字符09、AZ或a~z
  • [[:blank:]]          匹配空格或制表符
  • [[:digit:]]            匹配0~9之间的数字
  • [[:lower:]]          匹配小写字母字符a~z
  • [[:print:]]            匹配任意可打印字符
  • [[:punct:]]          匹配标点符号
  • [[:space:]]         匹配任意空白字符:空格、制表符、NL、FF、VT和CR
  • [[:upper:]]         匹配任意大写字母字符A~Z

示例说明:

使用特殊字符组可以很方便地定义区间。可以用
[[:digit:]]
来代替区间
[0-9]

3.9 星号【*】

在字符后面放置星号表明该字符必须在匹配模式的文本中出现
0
次或多次。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

在字符后面放置星号表明该字符必须在匹配模式的文本中出现
0
次或多次。

[外链图片转存中…(img-FAWINvwg-1714514765253)]
[外链图片转存中…(img-APSeh5x6-1714514765254)]
[外链图片转存中…(img-ICOZpKn4-1714514765254)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值