Linux-正则表达式RE

Linux-文本处理工具sed
Linux-文本处理工具awk
Linux-文本处理工具grep
Linux-文本处理工具cut
Linux-正则表达式RE


正则表达式RE 说白了就是文本处理工具
重要的文本处理工具:vim、sed、awk、grep
mysql、oracle、php、python、Apache、Nginx …

一、什么是正则表达式? 匹配字符串

正则表达式(regular expression, RE)是一种字符模式,用于在查找过程中匹配指定的字符。在大多数程序里,正则表达式都被置于两个正斜杠之间;例如/l[oO]ve/就是由正斜杠界定的正则表达式,它将匹配被查找的行中任何位置出现的相同模式。在正则表达式中,元字符是最重要的概念。

二、元字符

定义:元字符是这样一类字符,它们表达的是不同于字面本身的含义
shell元字符(也称为通配符) 由shell来解析,如rm -rf .pdf,元字符 Shell将其解析为任意多个字符
正则表达式元字符 由各种执行模式匹配操作的程序来解析,比如vi、grep、sed、awk、python,java,go

[root@tianyun ~]# rm -rf *.pdf

[root@tianyun ~]# grep 'abc*' /etc/passwd
abrt:x:173:173::/etc/abrt:/sbin/nologin

echo “abc”| grep ‘abc*’
abc
echo “abcccccc”| grep ‘abc*’
abcccccc

1.正则表达式元字符:
2. 基本正则表达式元字符

元字符功能示列
^行首定位符^lovegrep ‘^root’ /etc/passwd
$行尾定位符love$grep ‘root$’ /etc/passwd
.匹配当前位置任意一个字符l…egrep ‘^r…t’ /etc/passwd
*匹配当前位置 .前一个或多个字符. 0到多个. 字符ab*lovegrep ‘ro*t’ /etc/passwd
.*任意多个字符grep ‘r*ot’ /etc/passwdgrep ‘r**t’ /etc/passwd
[]匹配指定范围内的一个字符 [lL]ovegrep ‘[rx]oot’ /etc/passwd只能iove 或 love
[ - ]匹配指定范围内的一个字符 [a-z0-9]ovegrep ‘[a-z0-9]oot’ /etc/passwda-z 中的一个 或 0-9 中的一个
[^]匹配不在指定组内的字符[^a-z0-9]ovegrep ‘[^a-z0-9]oot’ /etc/passwd
^在字符类符号(括号[])之内与之外是不同的! 在 [] 内代表『反向选择』,在 [] 之外则代表定位在行首的意义! 重点!!!匹配行首的(才能匹配到)
\用来转义元字符love.
<词首定位符<love无用
>词尾定位符love>无用
(…)匹配稍后使用的字符的标签:% s/172.16.130.1/172.16.130.5/正则的分组
:% s/(172.16.130.)1/\15/
:% s/(172.)(16.)(130.)1/\1\2\35/
:3,9 s/(.*)/#\1/给某些行加注释, 转意后 把9换成6 只换9前面有字符的
x{m}字符x重复出现m次o{5}
x{m,}字符x重复出现m次以上o{5,}
x{m,n}字符x重复出现m到n次o{5,10}

扩展正则表达式元字符

元字符功能示列
+匹配一个或多个前导字符[a-z]+ove(这里可以和*的用法相互理解)
?匹配零个或一个前导字符lo?ve
ab匹配a或blove
()组字符loveablers love(able
(…)(…)\1\2标签匹配字符(love)able\1er
  1. POSIX字符类:
表达式功能示列
[:alnum:]字母与数字字符[[:alnum:]]+
[:alpha:]字母字符(包括大小写字母)[[:alpha:]]{4}
[:blank:]空格与制表符[[:blank:]]*2+++
[:digit:]数字字母[[:digit:]]?
[:lower:]小写字母[[:lower:]]{5,}
[:upper:]大写字母[[:upper:]]+
[:punct:]标点符号[[:punct:]]
[:space:]包括换行符,回车等在内的所有空白[[:space:]]+

三、正则匹配示例:vim

/love/				
/^love/
/love$/
/l.ve/
/lo*ve/
/[Ll]ove/
/love[a-z]/
/love[^a-zA-Z0-9]/

/.*/
/^$/
/^[A-Z]..$/	
/^[A-Z][a-z ]*3[0-5]/	
/[a-z]*\./	                                                               
/^ *[A-Z][a-z][a-z]$/	                              开头是空格的             
/^[A-Za-z]*[^,][A-Za-z]*$/	                      小写字母结束的
/\<fourth\>/		                                  
/\<f.*th\>/		
/5{2}2{3}\./

空行

/^$/
^代表行首
$代表行尾
^$意思就是行首之后就是行尾,中间什么也没有

/^[ \t]*$/	

注释行

/^#/
/^[ \t]*#/

:1,$ s/\([Oo]ccur\)ence/\1rence/	
:1,$ s/\(square\) and \(fair\)/\2 and \1/	
========================================================
s/^[ \t]*                   #是将这一行起始的空白字符删掉
s/[ \t].*//                  #是将空白及以后的内容删掉s/[ \t].*//                       

表示如果匹配到以制表符开头的字符串那就把开头的制表符去掉,s/[ \t].*//表示如果在字符串中有制表符那么把制表符去掉。就是去掉匹配字符串中的制表符

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值