By @freekey
my $string = 'Hola mundo!'; say "Es un saludo." if $string =~ /Hola/;
//
m//
=~
!~
my $string = "Hola que tal!?"; my $regex = qr/Hola/; say "Es otro saludo!" if $string =~ /$regex/; my $more = qr/que tal/; say "Es este saludo!" if $string =~ /$regex $more/;
"Hola que tal" =~ /Ho+la/; "Hoooola!!!" =~ /Ho+la/; "Hooooooooooola" =~ /Ho+la/; # false "Hla" =~ /Ho+la/;
"Hola que tal" =~ /Ho*la/; "Hoooola!!!" =~ /Ho*la/; "Hooooooooooola" =~ /Ho*la/; # verdadero "Hla" =~ /Ho*la/;
"Hola que tal" =~ /Ho?la/; # verdadero "Hla" =~ /Ho?la/;
"Hola que tal" =~ /Ho{1}la/; "Hoooola!!!" =~ /Ho{3}la/; "Hooooooooooola" =~ /Ho{3,}la/; "Hooooooooooola" =~ /Ho{3,11}la/; # * es igual a {0,} # + es igual a {1,}
"Hola\nque tal" =~ /\Aque tal\Z/;
"Hola que tal" =~ /^hola que tal$/;
"Hola que tal" =~ /\bque\b/; # false "Nos quedamos" =~ /que\b/;
"cualquier cosa que pongamos le mola" =~ /.*/;
\d
qr/[123456789]/ qr/[1-9]/
\D
qr/[^1-9]/
\w
qr/[a-zA-Z0-9_]/
\W
qr/[^a-zA-Z0-9_]/
\s
qr/[ ]/ # y varios espacios mas unicode!
\S
qr/[^\s]/ # :-)
my $str = "3 tristes tigres en 1 trigal con 1 copa en la mano"; if ( $str =~ /\d(.+)\d/ ) { say $1; # ??? }
my $str = "3 tristes tigres en 1 trigal con 1 copa en la mano"; if ( $str =~ /\d\s*(.+)\s*\d/ ) { say $1; # "tristes tigres en 1 trigal con" }
my $str = "3 tristes tigres en 1 trigal con 1 copa en la mano"; if ( $str =~ /\d\s*(.+?)\s*\d/ ) { say $1; # "tristes tigres en" }
my $str = "3 tristes tigres en 1 trigal con 1 copa en la mano"; if ( $str =~ /\d\s*(?.+?)\s*\d/ ) { say $+{quienes}; # "tristes tigres en" }
my $str = 'Mi dirección de correo es diego@freekeylabs.com'; my $email = qr/\w+@\S+/; if ( $str =~ /(?$email)/ ) { say "Mi email es: $+{email}"; }
my $str = 'Mi dirección de correo es diego@freekeylabs.com'; my $str2 = "Mi teléfono es 666-909-456"; my $email = qr/\w+@\S+/; my $phone = qr/\b\d{3}-\d{3}-\d{3}\b/; if ( $str =~ /(?:(?$email)|(?$phone))/ ) { if ( $+{mail} ) { say "El email es: $+{email}"; } else { say "El teléfono es: $+{tel}"; } }
'diego@freekeylabs.com' =~ /\w+@(?:\w+\.)+\w+/;
my $string = "..."; "interpolado" =~ /$string/; # match! my $q_string = quotemeta($string); "interpolado" =~ /$q_string/; # not match!
'como quotemeta()' =~ /\Q$string\E/; # not match!
$string =~ /( \w+@\S+ # pillo un email | # o \b\d{3}-\d{3}-\d{3}\b # pillo un teléfono )/x; 'Hola que tal!?' =~ /hola/i; # case insensitive
(y el modificador /g)
my $phone = qr/\b\d{3}-\d{3}-\d{3}\b/; my $string = 'Casa: 939-098-342 | Movil: 632-090-345'; say "got a phone!" if $string =~ /$phone/; # scalar context my ( $first_phone ) = $string =~ /$phone/; my @all_phones = $string =~ /$phone/g;
my $phone = qr/\b\d{3}-\d{3}-\d{3}\b/; my $string = 'Casa: 939-098-342 | Movil: 632-090-345'; $string =~ s/$phone/(hidden data)/g; say $string; # "Casa: (hidden data) | Movil: (hidden data)";
my @words = split /\s+/, "habia una vez una palabra";