- 论坛徽章:
- 307
|
本帖最后由 sunzhiguolu 于 2015-09-27 11:38 编辑
- #!/usr/bin/perl
- use 5.010;
- use strict;
- use warnings;
- my $numbers = 11223344;
- if ($numbers =~ m/\b(([0-9])\2)+4/){
- print "Match!\n";
- }
复制代码 以上的匹配结果成功, 然后打印字符串 "Match!" 结束. 我有几个地方不明白向大家请教:
当表达式的数字字符 "4" 去尝试匹配字符串的结束字符失败后, 前面的分组交出字符 "44" 后, 为什么不会让字符组 "[0-9]" 再次尝试匹配?
如果是从结果来看, 如果让字符组 "[0-9]" 去匹配由分组交出的字符 "44" 中的一个字符会造成死循环. 那么我该如何进行理解...
上面的描述是我的理解, 如果有什么不对的地方请大家给予指正. 在此先谢过大家!
另外针对元字符 "\b", 是否保留或去掉, 完全取决于您的匹配需求. (我依然使用 "Jason680" 大神的表达式方式)
对于元字符 "\b" 的功能以及上面我提到的问题, 大神 "MMMIX" 都 一 一 说明, 最后感谢您对知识的无私分享精神! |
|