在测试正则表达式的密码时,我遇到了这个问题:
这有效:
@H_403_15@perl -e 'if ( "Bomba\@2071" =~ /^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8,}$/ ) { print 1; } '虽然这永远不匹配:
@H_403_15@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源.所以在这种情况下坚持逃避.
总结以上是内存溢出为你收集整理的在Perl正则表达式中逃脱@全部内容,希望文章能够帮你解决在Perl正则表达式中逃脱@所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)