[Linux](十一) --基础正则表达式学习

今天先不学习bash了,想学习一下正则表达式,就是这么任性。
以前也学过一点正则表达式,不过发现不用真的很容易忘,所以写一篇博客加深印象!!

正则表达式分,基础正则表达式,和扩展正则表达式。


语系对正则表达式的影响

在学习我了解到一个知识点,原来语系对正则表达式是有影响的。
比如:

  • LANG = C时,01234…ABCD…Zabcd…z
  • LANG = zh_CN时,01234…aAbBcCdD…zZ
    当我们使用[a-z]在LANG=C中只有小写字母,但在LANG=zh_CN中发现大写字母也在里面。
所以我么使用正则表达式时,要注意环境的语系!

1.基础正则表达式、

用法:

特殊符号代表意义
[:alnum:]0-9,A-Z,a-z
[:alpha:]A-Z,a-z
[:black:]代表空格键和tab键
[:cntrl:]键盘上的控制按键
[:digit:]0-9
[:graph:]除了空格键和tab键外的其他所有按键
[:lower:]a-z
[:print:]可以被打印出来的字符
[:upper:]A-Z
[:space:]任何会产生空格的按键
[:xdigit:]十六进制的数字类型,0-9,A-F,a-f
练习:使用grep命令来练习。

首先需要一个文件,我使用的是col命令的说明书。
man col > col.man
图片.png

例子1.找到所有含有数字的行,然后列出前三行。

grep -n '[0-9]' col.man | head -n 3
或者这样写:
grep -n '[[:digit:]]' col.man | head -n 3
图片.png

例子2:找到st后面接一个字母的行,列出前三行。

grep -n 'st[a-z] col.man | head -n 3
或者grep -n 'st[[:lower:]] col.man | head -n 3
图片.png

例子3:找到不含大写字母的行,列出前三行。

grep -n '[^[:upper:]]' col.man | head -n 3

提醒:这里发现第一行明明有含有大写字母为什么还行呢?因为它虽然有大写,但它也有小写的字母啊。


例子4:找到开头是空格的行,列出前三行。

grep -n '^[[:space:]]' col.man | head -n 3
图片.png

可以发现^在[]内和外意思是不同的,[^]意思是反向选择的意思,^[]意思是行首的意思。

例子5:找到行尾是.的行,列出前三行。

grep -n '\.$' col.man | head -n 3
图片.png

$代表行尾的意思,这里因为.在正则中有其他意思,所以需要使用转义字符。

例子6:去除一个文本多余的空行。

grep -v '^$' col.man

^$比配所有的空白行,-v方向选择。

例子7:使用.号来匹配任意一个字符。

grep -n 'ES.' col.man

这里.匹配的是C这个字符。

例子8:使用*号来匹配重复的字符。

grep -n 'eee*' col.man
图片.png

*号意思是重复前面字符的0次或以上。
所以’eee*'的匹配的是ee,或者eee,eee…

例子9:使用限定范围符号{}。

grep -n 'fe\{2\}d' col.man
图片.png

  • 这里得使用\转义{},因为他们在bash有其他的意思。
  • {},代表了前面字符的范围,这里指的是e的范围是2个,不是2个以上了!
  • 若想要2个以上呢?可以加个逗号,{2,}
  • 指定一定范围,比如{2,5},2到5个前面的字符。

总结刚刚使用到的字符。

RE字符意义
^word待查找的字符串的行首
word$待查找的字符串的行尾
.匹配一个任意一个字符
\转义字符
*重复0个或以上前面的字符
[]从中括号中选取想要的字符
{}限定范围,规定前面字符的数量

现在感觉学起来不难,但感觉到时候一起结合起来应用的时候就有难度了…扩展正则表达式明天在学了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值