If you are trying to figure out regular expressions, I highly recommend japhy's module YAPE::Regex::Explain.

When installing it you will have trouble unless you first install YAPE::Regex first. There is a dependency there, but he didn't properly indicate it. I reported that bug.

If you have trouble installing things (eg you are on Windows and aren't familiar with CPAN and CPANPLUS) you can get the sources by following these links to .\YAPE\Regex.pm and .\YAPE\Regex\Explain.pm. Save those files with those paths (I assumed a Windows delimiter) and then write the following script:

#! perl use strict; use YAPE::Regex::Explain; print YAPE::Regex::Explain->new(shift)->explain;
And now you can get explanations like the following:
tilly@localhost:~$ perl re-explain foo The regular expression: (?-imsx:foo) matches as follows: NODE EXPLANATION ---------------------------------------------------------------------- (?-imsx: group, but do not capture (case-sensitive) (with ^ and $ matching normally) (with . not matching \n) (matching whitespace and # normally): ---------------------------------------------------------------------- foo 'foo' ---------------------------------------------------------------------- ) end of grouping ---------------------------------------------------------------------- tilly@localhost:~$ perl re-explain '(foo|bar)' The regular expression: (?-imsx:(foo|bar)) matches as follows: NODE EXPLANATION ---------------------------------------------------------------------- (?-imsx: group, but do not capture (case-sensitive) (with ^ and $ matching normally) (with . not matching \n) (matching whitespace and # normally): ---------------------------------------------------------------------- ( group and capture to \1: ---------------------------------------------------------------------- foo 'foo' ---------------------------------------------------------------------- | OR ---------------------------------------------------------------------- bar 'bar' ---------------------------------------------------------------------- ) end of \1 ---------------------------------------------------------------------- ) end of grouping ----------------------------------------------------------------------
(I actually ran this under Linux. On Windows you will want to quote the RE with ", not '.)

This makes it easier to for beginners to understand what a given regular explanation should do.


In reply to Re: regex: only want [a-zA-Z] and comma chars in a string by tilly
in thread regex: only want [a-zA-Z] and comma chars in a string by heezy

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.