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