perl-regexp_使用Regexp :: Common在Perl中轻松进行数据验证

perl-regexp

在Perl中构建正则表达式可能会有些棘手,特别是对于新手而言。 这是一项强大的技术,但是即使是经验丰富的Perl开发人员有时也会发现自己在检查文档以确保他们做对了。

正则表达式的另一个常见问题在于我们一直使用的通用表达式。 似乎我们将永远重新发明轮子! 但是,至少对于这个问题,有一个有用的答案。

Damian Conway的模块Regexp :: Common为具有可重复的,有用的正则表达式建立了框架。 有用的是,它附带了许多已定义的例程,并且它提供了一些工具,可用于为应用程序可能需要的任何内容汇总自己的模式。 让我们快速看一下。

用法

将模块与use Regexp::Common一起use Regexp::Common ,可以在要放置自己的表达式的地方替换包含的模式,如下所示:



   
   
if ( $input =~ /$RE{num}{int}/ ) {
    print 'yes, it is an integer!' ;
}
elsif ( $input =~ /$RE{quoted}/ ) {
    print 'it is a quoted string!' ;
}

如果您喜欢以其他方式使用它,则也可以使用基于子例程的界面。 上面的逻辑相同,如下所示:



   
   
if ( $input =~ RE_num_int ( ) ) {
    print 'yes, it is an integer!' ;
}
elsif ( $input =~ RE_quoted ( ) ) {
    print 'it is a quoted string!' ;
}

一些内置表达式具有参数设置,可让您配置其行为,例如搜索分隔符,字符串格式以及许多其他内容。 要使用它们,只需将它们包括在通话中:



   
   
# Check for balanced parentheses
if ( $input =~ /$RE{balanced}{-parens=>'()'}/ )   { ... }
# or using the subroutine interface:
if ( $input =~ RE_balance ( - parens => '()' ) { ... }

我发现的一种非常好的模式是删除前导和/或尾随空格的调用。 在撰写Perl的15年左右的时间里,我已经看到很多杂乱的方式来做到这一点,但是对我来说,这是干净而优雅的:



   
   
$input =~ s/$RE{ws}{crop}//g;

已经为Regexp :: Common部署了多种模式,包括多种URL,常见的字符串格式问题,信用卡号,数字,空格,邮政编码,美国社会保险号,回文甚至是亵渎! 我查看了最后一个人的源代码,但感到困惑。 Damian的正则表达式fu比我的强得多,这不仅是一个简单的列表匹配工具。 您可以在MetaCPANRegexp :: Common发布页面上查看包含的模块的完整列表。

创建自己的

如果您想在$RE哈希中创建自己的元素,则可以在use语句中包括pattern导出。 这是根据文档改编而成的示例:



   
   
use Regexp :: Common 'pattern' ;

pattern name   => [ 'name' , 'mine' ] ,
        create => '(?i:Ruthie)' ,
        #the 'i' makes it case-insensitive!
        ;

my $input = 'Ruthie, I really need you to finish this article!' ;
if ( $input =~ /$RE{name}{mine}/ ) {
    print "You got mentioned! \n " ;
}
$input = 'I can even, ruthie, include it mid-sentence.' ;
if ( $input =~ /$RE{name}{mine}/ ) {
    print "You got mentioned en passant! \n " ;
}

如果您的应用程序工作使用正则表达式进行数据验证,请确保并给Regexp :: Common看看,看看是否可以节省一些时间和痛苦。 通过将所需的新模块添加到Regexp :: Common的一系列工具中,您可以在整个大型应用程序中进行一致的验证。 如果您编写了有用的东西,为什么不将其提交给维护者添加呢? 您可以在Regexp :: Common文档中找到联系信息

翻译自: https://opensource.com/article/18/3/easy-data-validation-regexpcommon

perl-regexp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值