in reply to Re^2: Need some help with Regex
in thread Need some help with Regex

Your A-Za-z should probably have been character classes, i.e. [A-Za-z] (or maybe simply \w, which also includes 0-9 and _ ).  Try

#!/usr/bin/perl -l $_ = `nslookup 209.197.123.153`; print $1 if /name\s*=\s*(([A-Za-z]+\.){2,})/; __END__ www.perlmonks.org.

Replies are listed 'Best First'.
Re^4: Need some help with Regex
by perlmonk1 (Initiate) on Feb 07, 2010 at 15:27 UTC
    I've recently started using Perl. All apologies for not being able to express the problem lucidly. almut, seems to have got what I was looking for...
    /name\s*=\s*([A-Za-z].+\w)/
    I used  \w as per your advise and got what I was really looking for... This works like a charm!! Thanks again, for sending me perlre document (I've bookmarked it :-) ) Cheers!!

      That may not be doing what you expect! Consider:

      #!/usr/bin/perl use strict; use warnings; for my $tail ('Z.z', '1.z', 'a(x)z', 'aaa', 'aa_', 'xxx@') { my $str = "name = $tail"; if ($str =~ /name\s*=\s*([A-Za-z].+\w)/) { print "Matched >$1< in >$str<\n"; } else { print "No match for >$str<\n"; } }

      Prints:

      Matched >Z.z< in >name = Z.z< No match for >name = 1.z< Matched >a(x)z< in >name = a(x)z< Matched >aaa< in >name = aaa< Matched >aa_< in >name = aa_< Matched >xxx< in >name = xxx@<

      [A-Za-z] matches a single letter. .+ matches at least one characters and as many as it possibly can such that the remainder of the regular expression matches. \w matches a single alphanumeric or underscore character.


      True laziness is hard work