linux字符集对正则表达式有什么影响
展开全部
有时候为了让Linux终端能够显示中文,会将终端的编码字符集设置为GB2312简体中文编码(就是将LANG环境变量设置成zh_CN.gb2312),这个时候对正则表达式的结果是有影响的。
比如,zh_CN.gb2312这个语系编码的数字及大小写英文的顺序是:0 1 2 3 4 5 6 ...... a A b B c C d D e E ...... z Z,当我们使用表示大写字符的[A-Z]时,在zh_CN.gb2312语系编码下,就不是表示大写字符了,而是表示“A b B c C d D e E ...... z Z”这一堆字符。
所以,在使用兼容于POSIX标准的正则表达式的时候,一般是使用“LANG=C”这个语系编码。另外,尽量使用特殊符号来表示英文和数字,比如用[:upper:]来代替[A-Z]。
比如,zh_CN.gb2312这个语系编码的数字及大小写英文的顺序是:0 1 2 3 4 5 6 ...... a A b B c C d D e E ...... z Z,当我们使用表示大写字符的[A-Z]时,在zh_CN.gb2312语系编码下,就不是表示大写字符了,而是表示“A b B c C d D e E ...... z Z”这一堆字符。
所以,在使用兼容于POSIX标准的正则表达式的时候,一般是使用“LANG=C”这个语系编码。另外,尽量使用特殊符号来表示英文和数字,比如用[:upper:]来代替[A-Z]。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询