Easier to find all the 10 or more digit numbers, then drop out the special case:
use strict; use warnings; my $str = '2222222222 1234567890 0000000000 48192049281924 99999999999 +999'; my @matched = grep {! /^(\d)\1{9,}$/} $str =~ /\b(\d{10,})\b/g; print "@matched";
Prints:
1234567890 48192049281924
Update: Ok, here's a regex that does the trick. Let me know which you think more readable and maintainable. ;)
use strict; use warnings; my $str = '2222222222 1234567890 0000000000 48192049281924 99999999999 +999'; my @matched = $str =~ / [^\d]* (?:\b(?: 0{10,} | 1{10,} | 2{10,} | 3{10,} | 4{10,} | 5{10,} | 6{10,} | 7{10,} | 8{10,} | 9{10,})\b [^\d]* )* (\b\d{10,}\b) (?:[^\d]* \b(?: 0{10,} | 1{10,} | 2{10,} | 3{10,} | 4{10,} | 5{10, +} | 6{10,} | 7{10,} | 8{10,} | 9{10,})\b )* /gx; print "@matched";
In reply to Re: RegEx to match unique string of digits
by GrandFather
in thread RegEx to match unique string of digits
by simulantx
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |