免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1491 | 回复: 5
打印 上一主题 下一主题

大小写匹配的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-26 15:42 |只看该作者 |倒序浏览
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
2 [报告]
发表于 2007-03-26 15:48 |只看该作者
* = {0,}
+ = {1,}

论坛徽章:
0
3 [报告]
发表于 2007-03-26 16:27 |只看该作者
以前有过讨论,见
http://bbs.chinaunix.net/viewthr ... p;extra=&page=1
下面是我的笔记
LC_COLLATE变量控制shell的字符排序默认行为。如LC_COLLATE已设定,则按照A-Za-z的方式排序,否则按照aA-zZ的方式排序。bash中的[a-z]扩展,也受此变量影响,若未设,则[a-z]扩展为[a-zA-Y],[A-Z]则扩展为[b-zA-Z]。

论坛徽章:
0
4 [报告]
发表于 2007-03-27 08:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2007-03-27 16:09 |只看该作者
sh-bourne手册中WARNINGS一段,建议使用[[:lower:]]*替换[a-z]*

论坛徽章:
0
6 [报告]
发表于 2007-03-27 16:35 |只看该作者
摘自hp-ux手册
排序顺序
在国际环境中,字符排序取决于LC_COLLATE 的值,而不是计算机排序序列中字符值的二进制排序。这会造成
一些附带的风险,尤其是在文件名生成模式中使用范围表达式时。例如,命令
rm [a-z]*
可能应该匹配所有以小写字母字符开头的文件名。但是,如果字典排序是由LC_COLLATE 指定的,它还将匹配
以大写字符开头的文件名(以及以标音字母开头的文件名)。相反,在丹麦语或挪威语等语言中,它将无法匹配
在z 后排序的字母。
在国际环境中匹配特定字符类的正确(安全)方法是使用以下形式的模式(请参阅regexp(5) ):
rm [[:lower:]]*
它使用LC_CTYPE 来确定字符类,并以可预见的方式处理所有支持的语言和字符集。对于在非国际化系统上生
成的Shell 脚本(或者没有考虑到上述风险), 建议在非NLS 环境中执行它们。这要求LANG 、
LC_COLLATE、等设置为C ,或者根本不设置。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP