加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl正则表达式中逃脱@

发布时间:2020-12-15 23:26:08 所属栏目:大数据 来源:网络整理
导读:我使用perl来匹配bash脚本中的正则表达式的密码. 在测试正则表达式的密码时,我遇到了这个问题: 这有效: perl -e 'if ( "Bomba@2071" =~ /^(?=.*[A-Z])(?=.*[!@#$*])(?=.*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8,}$/ ) { print 1; } ' 虽然这永远不匹配: per
我使用perl来匹配bash脚本中的正则表达式的密码.

在测试正则表达式的密码时,我遇到了这个问题:

这有效:

perl -e 'if ( "Bomba@2071"  =~ /^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8,}$/ ) { print 1; } '

虽然这永远不匹配:

perl -e 'if ( "Bomba@2071"  =~ /^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8,}$/ ) { print 1; } '

你可以注意到,它有效,因为我逃脱了@符号.我从来没有在其他编程语言中看到过这样的东西,经过一个多小时的坚持,我发现原因仅仅是机会.

所以,我的问题是,这是怎么回事?为什么我需要逃避像@这样的奇怪角色?

解决方法

这是因为perl中的@表示为 array variable,所以如果没有转义,则后面的内容将被解释为数组变量.

除了转义@,您还可以使用单引号而不是双引号,例如’Bomba @ 2071′,这样字符串就不会被解释了,虽然在这种情况下它会产生一个新问题,因为你在shell命令中使用单引号来引用整个perl源.所以在这种情况下坚持逃避.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读