正则表达式是一个描述一组字符串的模式,有许多普通字符和元字符组成的字符集。正则表达式的主要作用就是进行文本搜索和字符串处理的,一个正则表达式匹配一个字符或字符串。
正则表达式的字符集种类:
字符集名称 | 含义 |
[:alnum:] | 匹配字母和数字字符;等同于A-Z,a-z,0-9 |
[:digit:] | 匹配数字0-9 |
[:alpha:] | 匹配所有字母含A-Z,a-z |
[:lower:] | 匹配所有小写字母a-z |
[:upper:] | 匹配所有大写字母A-Z |
[:space:] | 匹配空白字符 |
基本正则表达式的元字符:
元字符类型 | 含义 | 举例 |
. | 匹配除换行符外任意一个字符 | 112.将匹配112+至少一个字符如1122、112d,但不匹配112 |
[] | 匹配任意范围内单个字符 | [ABC]将匹配字符A、B、C中任意一个;[a-z]将匹配所有小写字母中的任意一个; |
[^] | 匹配任意范围外单个字符 | [^ABC]将匹配字符除了A、B、C的任意一个字符 |
* | 匹配其前面的字符串或正则表达式任意次包括0次 | 如112*将匹配112+多个或0个2,如112、1122、1122222等 |
\? | 匹配0次或一次其前面的字符串,其前面的字符可有可无 | 如112\?将匹配11、11211 |
\{m\} | 具体匹配其前面的字符要m次 | he\{3\}匹配heee |
\{m,n\} | 具体匹配其前面的字符要在m次与n次之间 | he\{0,3\}匹配heee、hee、he、h |
\{m,\} | 匹配其前面的字符最少n次 | he\{3,\}匹配heee、heeeee等 |
\{0,m\} | 匹配其前面的字符最多n次 | he\{0,1\}匹配h、he |
.* | 任意长度任意字符 | a.*b匹配所有以a开头b结尾的字符串 |
^ | 行首匹配,指定字符必须出现在行首 | ^root只匹配以root开头的行 |
$ | 行尾匹配,指定字符必须出现在行尾 | /bash$匹配以"/bash"结尾的行 |
^$ | 空白行 | |
\< \b | 词首锚定,写在单词最左端 | \<abc |
\> \b | 词尾锚定,写在单词最右端 | abc\> |
\(\) | 分组,分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,之后可被引用 | \(ab\)* |
\# | 引用,表示对分组中的内容进行#次引用 |
扩展正则表达式:
. [] [^] | 含义与基本正则表达式一样 |
* ? {m}{m,} {m,n} {0,m} | 与基本正则表达式一样,只是?和{}无需\进行符号转义 |
+ | 匹配前面的字符至少一次 |
^ $ \< \b \> | 与基本正则表达式一样,同样分别表示行首、行尾、词首和词尾锚定 |
() | 表示分组的意思 |
| | 或者表示选择关系 |
^$ | 表示空白行,等同^[[:space:]]*$ |
常用的搜索命令:grep、egrep
命令常用参数:
-v | 反向匹配,显示没有匹配到的行 |
-o | 仅显示匹配的字串,而非字串所在的行 |
-i | 忽略字符大小写 |
-E | 支持使用扩展正则表达式 |
-A# | 显示匹配行的后面指定数目行 |
-B# | 显示匹配行的前面指定数目行 |
-C# | 显示匹配行的前后指定相同数目行 |
实例:
1、显示/etc/passwd中的root账户信息,可以看出^符号的作用了
原文地址:http://3213044.blog.51cto.com/3203044/1631134