linux 之正规表达式

来源:互联网 发布:最终幻想猫女捏脸数据 编辑:程序博客网 时间:2024/05/01 18:37

为什么语系的资料会影响到正规表示法的输出结果呢?举例来说,在英文大小写的编码顺序中,zh_TW.big5及C这两种语系的输出结果分别如下:

  • LANG=C 时:0 1 2 3 4 ... ABCD ... Z abcd ...z
  • LANG=zh_TW 时:0 1 2 3 4 ... a A b B c C d D ... z Z

上面的顺序是编码的顺序,我们可以很清楚的发现这两种语系明显就是不一样!如果你想要撷取大写字元而使用[AZ]时,会发现LANG=C确实可以仅捉到大写字元(因为是连续的) ,但是如果LANG=zh_TW.big5时,就会发现到,连同小写的bz也会被撷取出来!因为就编码的顺序来看, big5语系可以撷取到『 A b B c C ... z Z 』这一堆字元哩!所以,使用正规表示法时,需要特别留意当时环境的语系为何,否则可能会发现与别人不相同的撷取结果喔!

由于一般我们在练习正规表示法时,使用的是相容于POSIX的标准,因此就使用『 C 』这个语系另外,为了要避免这样编码所造成的英文与数字的撷取问题,因此有些特殊的符号我们得要了解一下的!这些符号主要有底下这些意义:

特殊符号代表意义[:alnum:]代表英文大小写字元及数字,亦即0-9, AZ, az[:alpha:]代表任何英文大小写字元,亦即AZ, az[:blank:]代表空白键与[Tab] 按键两者[:cntrl:]代表键盘上面的控制按键,亦即包括CR, LF, Tab, Del.. 等等[:digit:]代表数字而已,亦即0-9[:graph:]除了空白字元(空白键与[Tab] 按键) 外的其他所有按键[:lower:]代表小写字元,亦即az[:print:]代表任何可以被列印出来的字元[:punct:]代表标点符号(punctuation symbol),亦即:" ' ? ! ; : # $...[:upper:]代表大写字元,亦即AZ[:space:]任何会产生空白的字元,包括空白键, [Tab], CR 等等[:xdigit:]代表16 进位的数字类型,因此包括: 0-9, AF, af 的数字与字元

0 0