正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
本例使用的是Ubuntu系统。只是简单演示一下怎么使用正则表达式,顺便加深一下自己对正则表达式印象:
使用文件是file 内容如下:
ab1234
ab 456
cd89
f1
r123
ab1234cd
1234ab
123
ab
ad
abd
adc
abc
abvd
2
现在我们想获得以字符开头以数字结尾的字符串
grep '^[a-z].*[0-9]$' file
ab1234
ab 456
cd89
f1
r123
因为\d是不是基本正则表达式字符串,所以无法在grep 下使用。否则会出错。具体有哪些基本字符串占时还没研究过。
grep '^[a-z].*\d$'
ab1234cd
ad
abd
abvd
发现这里\d被解释为以字符d结尾的字符串了!!使用\w也有小心一点,使用{}记得用\{ \} 不然会达不到预期效果
grep '^[a-z].*[0-9]$' file
中 .一定不能少 .意思是匹配除“\
n
”之外的任何单个字符。要匹配包括“\
n
”在内的任何字符,请使用像“(.|\n)
”的模式
而*匹配前面的子表达式零次或多次。在本例就是匹配 .零次或者多次。若不加 .结果就是
grep '^[a-z]*[0-9]$' file
f1
2
这时候*比配的是[a-z]任意字符0次或者多次。0次就是 2 一次或者多次就是 f1.
+是匹配前一字符一次或者多次,
本例使用:
grep '^[a-z].\+[0-9]$' file
ab1234
ab 456
cd89
r123
与上一个 grep '^[a-z].*[0-9]$' file
发现少了 f1 这一行,因为其匹配要多于一个。f1不符合要求,若是有fa1,fb1,fc1.。。。都是符合要求的。
现在使用另一个实例 text 内容
a
ab
aab
aabb
aaabb
aaabbb
grep '^[a-z]\+' text
结果
ab
aab
aabb
aaabb
aaabbb
==这个命令
grep '^[a-z]\{1,\}' text
grep '^[a-z]\{0,\}' text
== grep '^[a-z]*' text
结果
a
ab
aab
aabb
aaabb
aaabbb
grep '^ab[d|c]' file
abd
abc
获得以ab开头紧跟d或者c字符的字符串
这是 |使用
grep '^[a-z].*\s[0-9].*$' file
ab 456
这是匹配\s是空白
记得[a-z]和[0-9]后.*都是不可少的,