正则表达式元字符学习

一、正则表达式元字符含义

^abc	匹配以abc开头的行。
abc$	匹配以abc结尾的行。
.  		匹配除了换行符以外的任意的单个字符。
?  		匹配前面的子表达式0次或1次。如"a?"表示匹配0个或1个"a"。
*  		匹配前面的子表达式0次或多次。如"a*"表示匹配0个或多个"a"。
+  		匹配前面的子表达式1次或多次。如"a\+"表示匹配1个或多个"a"
####	注意:这里的shell脚本将"+"作为普通字符,"\+"则转移为元字符,而有些语言则直接将"+"作为元字符。
.*		任意多个字符,可以理解为0个或者多个(.),也就任意多个字符。
[ ]  	匹配中括号里的任意指定字符,但只匹配一个字符。如"[a]"匹配"a","[a-c]"匹配"a"或"b"或"c"。
[^ ] 	匹配中括号里的字符之外的任意一个字符。如"[^a]"匹配除"a"之外的字符。
{n} 	匹配前面的子表达式n次。如"as\{2\}",匹配"ass"。
{n,} 	匹配前面的子表达式大于或者等于n次。如"as\{2,\}",匹配"ass"或"asss"等。
{n,m} 	匹配前面的子表达式n至m次。如"as\{1,2\}",匹配"as"和"ass"。
{,m} 	匹配前面的子表达式0至m次。如"as\{,2\}",匹配"a"、"as"和"ass"。
####	注意:shell脚本是将"{"和"}"作为普通字符的,因此以上表达式要作为元字符处理则要在"{"和"}"前加上"\"。
\   	转义字符,将下一个字符标记为特殊字符(如果为元字符)或元字符(如果为普通或特殊字符)。
\f		匹配一个换页符。
\n		匹配一个换行符。
\r		匹配一个回车符。
\t		匹配一个制表符。
\v		匹配一个垂直制表符。
\w      匹配字母、数字和下划线,不匹配符号。等价于[A-Za-z0-9_]。
\W      \w的反匹配方式。等价于[^A-Za-z0-9_]。
\b      匹配单词边界,也就是指单词和空格间的位置。如"rd\b"可匹配"word ",但不能匹配"words "。
\B		匹配非单词边界。如"rd\B"可匹配"words ",但不能匹配"word "。
\s      匹配任意空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
\S		匹配任何非空白字符。等价于[^ \f\n\r\t\v]。
\d      匹配一个数字字符。等价于[0-9]。
\D		匹配一个非数字字符。等价于[^0-9]。

二、以grep匹配a文件来演示正则表达式

hollowman@hollowman-F117:~$ cat a  						##查看a文件内容
abcdefgabc
defgabc
last last last
castcastcast
rust rust rust
abc123def
-abc
_abc
@abc
a
aa
aaa
aaaa
[ ] { } ( ) . * ^ $ ? +
 
hollowman@hollowman-F117:~$ cat a | grep "^abc"    		#匹配abc开头的行,匹配的字符会以红色字样打印出来。
abcdefgabc
abc123def
hollowman@hollowman-F117:~$ cat a | grep "abc$"    		#匹配abc结尾的行。
abcdefgabc
defgabc
-abc
_abc
@abc
hollowman@hollowman-F117:~$ cat a | grep "l.*t"     	#匹配l开头,t结尾。
last last last
hollowman@hollowman-F117:~$ cat a | grep "a*st"     	#匹配0个以上的"a"再加上"st"。
last last last
castcastcast
rust rust rust
hollowman@hollowman-F117:~$ cat a | grep "a\+st"    	#匹配1个以上的"a"再加上"st"。
last last last
castcastcast
hollowman@hollowman-F117:~$ cat a | grep "[r_\@]"  		#匹配"r"、"_"、"@"中的任意一个字符。
rust rust rust
_abc
@abc
hollowman@hollowman-F117:~$ cat a | grep "[^a-z 0-9]"  	#匹配"a-z",空格,"0-9"之外的字符
-abc
_abc
@abc
[ ] { } ( ) . * ^ $ ? +
hollowman@hollowman-F117:~$ cat a | grep "a\{3,4\}"  	#匹配"aaa"和"aaaa"字符,也就是3至4次"a"字符
aaa
aaaa
hollowman@hollowman-F117:~$ cat a | grep "st\b"			#匹配"st"作为单词边界的字符串
last last last
castcastcast
rust rust rust
hollowman@hollowman-F117:~$ cat a | grep "st\B"			#匹配"st"不作为单词边界的字符串
castcastcast

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值