正则表达式和通配符有许多相似的地方,但它们作用、用法、格式有许多差别。
- 首先通配符是用来匹配文件名的,而正则表达式是用来匹配文本内容的。而且有许多小的地方不一样:
符号 | 正则表达式 | 通配符 |
---|---|---|
* | 匹配前面符号任意的字符 | 匹配零个或多个字符 |
? | centered | 匹配任何单个字符 |
[a-z] | 包含大小写 | 不包含大小写 |
.* | 任意长度字符 | 以点号开头的任意字符 |
\ | 转义 | - |
^ | 行首 | - |
$ | 行尾 | - |
~ | - | 当前用户家目录 |
. | 任意单一字符 | 普通符号 |
\<\> | 锚定单词左右侧 | - |
\? | 匹配其前面字符1或0次 | - |
\+ | 匹配其前面字符至少一次 | - |
以上是符号之间的一些差别
在正则表达式里有个符号叫单词锚定:\<\>,它是用做单词定界的,那怎么区分单词是不是到了边界呢?
规律:除了字母、数字、下划线、汉字(估计这里面不会出现)都可以作为单词的定界,因为前面它们如果和单词写在一块就会成为单词的一部分,所有不能做为单词定界符号。
#取目录名,而\<做为单词词首定界用的挺巧妙
[root@centos7init3 app]# echo "/etc/init.d/functions" | grep -o "^/.*\<"
/etc/init.d/
小坑:
1. 点号 . 放在[] 里只表示点号,在其他地方要转义
2. grep ‘a\\c’ file #搜索 a\c