正则表达式是一个描述一组字符串的模式,有许多普通字符和元字符组成的字符集。正则表达式的主要作用就是进行文本搜索和字符串处理的,一个正则表达式匹配一个字符或字符串。
正则表达式的字符集种类:
| 字符集名称 | 含义 | 
| [: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