正则表达式分为基础正则表达式与扩展正则表达式。
在Linux中使用【grep】来实现该功能。
语系对正则表达式的影响
在操作系统中显示的文字其实都是通过编码表显示出来的,在计算机内部都是01表示,而不同的编码,会存在不同的编码顺序。
- LANG=C
0 1 2 3 4 … A B C D E … Z a b c d e … z - LANG=zh_CN
0 1 2 3 4 … a A b B c C … z Z
当我们使用 [A-Z]来表示大写字母时,根据以上的两种编码格式,会匹配出不同的字符集,使用C语系的字符集,则会正确的匹配出大写字母,而使用zh_CN则会匹配到小写字母。为了避免这样编码所造成的英文与数字的选取问题。于是正则表达式使用一些特殊符号来匹配这些字符集。
特殊符号 | 代表意义 |
---|---|
[:alnum:] | 表示英文大小写字母及数字 |
[:alpha:] | 表示英文大小写字母 |
[:blank:] | 表示空格键与Tab |
[:cntrl:] | 表示控制按键,CR,LF,Tab,Del |
[:digit:] | 表示数字 |
[:graph:] | 除空白符(空格及Tab)以外的所有按键 |
[:lower:] | 表示小字字母 |
[:print:] | 表示所有可以被打印的字符 |
[:punct:] | 表示标点符号,即(:”‘?!;#$) |
[:upper:] | 表示大写字母 |
[:space:] | 表示会产生空白的字符(空格,Tab,CR) |
[:xdigit:] | 表示十六进制的数字字符,即(0-9,A-F,a-f) |
扩展正则表达式
RE字符 | 意义 |
---|---|
+ | 重复一个或一个以上前一个RE字符 |
? | 零个或一个的前一个RE字符 |
| | 用或的方式找出数个字符串 |
() | 找出群组字符串 |
()+ | 多个重复群组的判别 |