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";