in reply to RegEx to match unique string of digits
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";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: RegEx to match unique string of digits
by JavaFan (Canon) on Jun 05, 2009 at 08:03 UTC |