| s/(.\d)\d/$1/g; | |
| s/(.\d)\d+/$1/g; | |
| s/(.\d)\d\d?/$1/g; | |
| s/(?<=.)(\d)\d/$1/g; | |
| s/(?<=\d)(\d)./$1/g; | |
| s/(?<=\d)(\d)\d/$1/g; | |
| s/(?<=\D)(\d)\d/$1/g; | |
| s/(?<!^)\d+(\d)/$1/g; |
Here is some code to help you check your answers:
By the way, Tye isn't sure that all the cases are as obvious as one might think. In fact, we are pretty sure that some of the behavior demonstrated is undocumented. Enjoy!#!perl use strict; my $nums = "1234*5678"; my @regexes = ( q/(.\d)\d/, q/(.\d)\d+/, q/(.\d)\d\d?/, q/(?<=.)(\d)\d/, q/(?<=\d)(\d)./, q/(?<=\d)(\d)\d/, q/(?<=\D)(\d)\d/, q/(?<!^)\d+(\d)/, ); $^A = ""; for my $regex ( @regexes ) { my $target = $nums; $target =~ s/$regex/$1/g; formline "\$_ = '$nums'; \@<<<<<<<<<<<<<<<<<<<<<<< ". "# Result: \$_ eq '$target'\n", "s/$regex/\$1/g;"; print $^A; $^A = ""; }
In reply to RegEx Challenge by Adam
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |