【Linux上分之路】第十一篇:Linux正则表达式

在这里插入图片描述

Linux正则表达式

正则表达式简单来说就是处理字符串的方法,它以行为单位来进行字符串的处理操作,正则表达式通过一些特殊符号的辅助,可以轻易的帮助用户完成某些特定字符串的处理过程(删除、查找、替换)

正则表达式是一种关于特定字符串的表示法,在Linux中只要某些处理程序支持正则表达式的表示法,则该程序就可以用来作为正则表达式的字符串处理之用

正则表达式的用途

由于正则表达式对字符串具有很强大的处理能力,Linux的一般软件程序都支持正则表达式,但是具体的字符串处理对比还是需要Linux用户来进行指定比对规则,可以让你在众多的错误信息中"取敌将首级",精准定位

正则表达式分类

正则表达式的字符串表示方式依照不同的严谨度而分为:基础正则表达式与扩展正则表达式

基础正则表达式

正则表达式是处理字符串的一种表示方法,对字符串的字符排序有影响的语系数据就会对正则表达式的结果产生影响

语系对正则表达式的影响

字符串文字或数字都是通过编码表转换而来的,不同的语系的编码数据并不相同,就会造成数据选取结果的差异

  • LANG=C:0 1 2 3 4 … A B C D …a b c d e…z
  • LANG=zh_CN:0 1 2 3 4 …a A b B c C d D…z Z

以上就是两种不同的语系,即分别的编码数据顺序是不同的,在使用正则表达式时需要主要当时语系环境是什么,否则同样的字符串会出现于不同于别人的正则表达式语系的处理结果

多数情况下为了兼容POSIX的标准,选取的是[LANG=C]的语系环境

基础正则表达式字符集合

基础正则表达式特殊字符

正则表达式字符字符意义字符范例
^word待查找的字符串在行首查找行首为#的那一行 grep -n ‘^#’ filename
word$待查找的字符串在行尾将行尾为!那一行打印出来并打印行号 grep -n ‘!$’ filename
.一定有一个任意字符的字符串查找e与e中间一定仅一个字符的字符串 grep -n ‘e.e’ filename
\转义符,去除特殊符号的特殊意义查找单引号’的那一行 grep -n ’ filename
*重复零个到无数多个的前一个字符查找ess、esss…这类的字符串 grep -n ‘ess*’ filename
[list]字符集合的正则字符,list列出想要选取的字符查找gl或gd的那一行 grep -n ‘g[ld]’ filename
[n1-n2]字符集合的正则字符,里面列出选取字符的范围查找大写字符在[A-Z]的字符 grep -n ‘[A-Z]’ filename
[^list]字符集合的正则字符 ,里面列出不要的字符串或范围查找不要大写字符[A-Z] grep -n ’[^ A-Z]‘ filename
\ {n,m \ }意义∶连续n到m个的前一个 RE 字符,若为{n}则是连续n个的前一个RE字符,若为{n,},则是连续n个以上的前一个RE字符在g与g之间有2个到3个的o存在的字符串,即(goog)(gooog)grep-n ‘go{2,3}g’ filename

正则表达式的特殊字符与一般在命令行输入命令的通配符并不相同,通配符*表示0~无限多个字符,正则表达式则表示重复0-无数次前一个RE字符

正则表达式练习

练习文本regular_express.txt

"open Source" is a good mechanism to develop programs. 
apple is my favorite food.
Football game is not use feet only. 
this dress doesn't fit me.^M
However,this dress is about $ 3183 dollars.^M 
GNU is free air not free beer.^M 
Her hair is very beauty.^M I can't finish the test.^M 
Oh! The soup taste good.^M 
motorcycle is cheap than car. 
This window is clear.^M
the symbol '*' is represented as start. 
Oh!	My god!^M
The gd software is a library for drafting programs.^M 
You are the best is mean you are the no. 1. 
The world <Happy> is the same with"glad". 
i like dog.^M
google is the best tools for search keyword. 
goooooogle yes!
go! go! Let's go. 
# I am Vbird
查找特定字符串

Linux正则表达式查找字符串

反向选择查找字符串

不出现特定字符才会显示在屏幕上

Linux正则表达式反向选择字符串
^word、word$

^表示待查找的字符串在行首,$表示待查找的字符串在行尾

Linux正则表达式行首行尾

.

有一个任意字符的字符串

Linux正则表达式任意一个字符

\

转义符,去除特殊符号的特殊意义

Linux正则表达式转义一个字符

*

重复零个到无数多个的前一个字符

Linux正则表达式重复

[list]

字符集合的正则字符,list列出想要选取的字符

Linux正则表达式范围

[n1-n2]

字符集合的正则字符,里面列出选取字符的范围

Linux正则表达式范围之间

[^list]

字符集合的正则字符 ,里面列出不要的字符串或范围

Linux正则表达式反向list

\ {n,m\ }

连续n到m个的前一个 RE 字符,若为{n}则是连续n个的前一个RE字符,若为{n,},则是连续n个以上的前一个RE字符

linux正则表达式指定连续

扩展正则表达式

扩展正则表达式可以通过群组功能[ | ]来进行一次查找,表示意义为or;要是用扩展正则表达式,可以使用grep -E或者直接使用egrep

扩展正则表达式特殊字符

RE字符意义范例
+重复一个或一个以上的 前一个RE字符egrep -n ‘go+d’ filename
零个或一个的 前一个RE字符egrep -n ‘go?d’ filename
|用或的方式找出数个字符串egrep -n ‘gd|good’ filename
()找出群组字符串egrep -n ’g(la|oo)d‘ filename
()+多个重复群组的判别egrep -n 'egrep ‘A(xyz)+C’ 查找A与C之间多个xyz的字符串

扩展正则表达式练习

+

重复一个或一个以上的 前一个RE字符

Linux正则表达式扩展+

零个或一个的 前一个RE字符

Linux正则表达式扩展?

|

用或的方式找出数个字符串

Linux正则表达式扩展or

()

找出群组字符串

Linux正则表达式扩展群组

()+

多个重复群组的判别

Linux正则表达式扩展群组+

总结

正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理操作;正则表达式通过一些特殊字符的辅助,可实现字符串处理的多种操作,只要工具程序支持正则表达式,那么该工具程序则可以作为正则表达式字符串来使用

赶紧学习起来吧!我是一个正在努力找回自我的人,希望能和一起学习的人成长,有错误的地方请各位大佬帮忙指正,如果觉得有帮助就点个赞当作对我的一个小肯定❤,peace&love

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值