使用quotemeta来排除非文字字符

ZDNet软件频道 时间:2004-01-08 作者:ZDNet China |  我要评论()
本文关键词:perl
当你允许用户(自己)任意指定搜索模式的时候,Perl在正则表达式上的强项有时会反过来纠缠你。但是,quotemeta这个程序能够让你排除所有可能导致问题的字符。
本文译自Builder.com,未经许可请勿转载

当你允许用户(自己)任意指定搜索模式的时候,perl在正则表达式上的强项有时会反过来纠缠你。但是,quotemeta这个程序能够让你排除所有可能导致问题的字符。

Quotemeta程序会排除所有的非文字(non-word)字符(也就是说,所有除了a-z、A-Z、0-9和下划线之外的字符)。这就使得接受用户指定的搜索模式以及明确地寻找其内容变简单了。

例如,如果用户正在寻找一个电话号码,他可能输入“(801) 555-1212”,将它作为搜索字符串。如果你把这个字符串直接传递给perl正则表达式引擎,它就会把括号翻译成为分组操作数而不是文字字符来匹配。但是,如果你把这个字符串传递给quotemeta,它就会排除这个括号(以及空白和连字符)。这就变成了下面的字符串:“(801) 555-1212”,它正是正则表达式引擎所期望的。

当你想要使用正则表达式引擎搜索一个文字字符串的时候,你可以使用quotemeta来排除字符串里所有的非文字字符。这就能够防止它们被误认为是正则表达式的命令。


本文作者:James Brown是具有20年工作经验的行业开发专家,拥有多重工作背景,包括数字硬件设计,网络操作系统开发和分布式计算。




责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134