http://www.perlmonks.org?node_id=418846

aristotle73 has asked for the wisdom of the Perl Monks concerning the following question:

I was looking over this tutorial Character Class Abbreviations on character class abbreviations and I am a little confused. I do not understand the implementation of these abbreviations. Does anyone know of any examples I could look over (I looked at the pattern matching examples but found them hard to understand as well)? Thx :D

20050102 Edit by ysth: use bracketed link instead of http://perlmonks.org...
Retitled by davido from ambiguous "Need some examples."

Replies are listed 'Best First'.
Re: Need some character class examples
by sgifford (Prior) on Jan 03, 2005 at 02:43 UTC

    Character classes are a way of saying this character or this other one or this other one or this other one. For example, [abc] matches a or b or c, as does the range [a-c]. The abbreviations are just shorthand for frequently used character classes. \d is shorthand for 0 or 1 or 2 or ... or 8 or 9---exactly the same as [0-9].

    So, if you required that a username start with a letter then be made up of letters or numbers, you could use /[a-zA-Z]\d*/. If you wanted to match two words seperated by one or more spaces, you could use /\w+\s+\w+/.

    Inverted character classes mean anything but this character or this other one or this other one. For example, [^0-9] matches anything except a digit. The abbreviation for this is \D.

    So, if you want to see if a string contained any non-word characters, you could use /\W/; if you wanted to match 3 sets of digits followed by nondigits, you could use /\d+\D+\d+\D+\d+\D+/.

Re: Need some character class examples
by phenom (Chaplain) on Jan 03, 2005 at 00:54 UTC
    Those will come in handy with regular expressions. You should have perldoc installed on your system, so try: perldoc perlrequick and  perldoc perlretut.
    print "Matched!\n" if($user =~ /^aristotle73$/i);
    Try reading those first. They'll give you a better idea. HTH.
      Thx, that helped a bunch :D