首先是正则表达式的特殊符号:
[:alnum:]代表英文大小写字母及数字
[:alpha:]代表英文大小写字母
[:blank:]代表空格和 tab 键
[:cntrl:]键盘上的控制按键,如 CR,LF,TAB,DEL
[:digit:]代表数字
[:graph:]代表空白字符以外的其他
[:lower:]小写字母
[:print:]可以被打印出来的任何字符
[:punct:]代表标点符号
[:upper:]代表大写字符
[:space:]任何会产生空白的字符如空格,tab,CR 等
[:xdigit:]代表 16 进位的数字类型
特殊符号实例:
任意建立一个文本并编辑
$ touch regular_express.txt
$ vi regular_express.txt
或者 sudo gedit regular_express.txt
查找小写字母:
$ grep -n '[[:lower:]]' regular_express.txt
查找数字:
# grep -n '[[:digit:]]' regular_express.txt
语系对正则表达式的影响:
由于不同语系的编码数据不同,所以造成不同语系的数据选取结果有所差异。以英文大小写为例,zh_CN.big5 及 C 这两种语系差异如下:
- LANG=C 时: 0 1 2 3 4....ABCDE...Zabcde...z
- LANG=zh_CN 时:0 1 2 3 4...aAbBcCdD.....zZ
在使用正则表达式[A-Z]时, LANG=C 的情况下,找到的仅仅是大写字符 ABCD..Z。而在 LANG=zh_CN 情况下,会选取到 AbBcCdD.....zZ 字符。因此在使用正则表达式时要特别留意语系。
由于我们一般使用的兼容与 POSIX 的标准,因此使用 C 语系。