[oak perl] Backslash Space in Regex?

Eugene eugene at metaart.org
Wed Jul 5 18:52:28 PDT 2006


On Wednesday 05 July 2006 15:35, Elijah Griffin wrote:
> Eugene wrote:
> > In the regex part of the introduction,
> > the author has an example in which the regex contains both
> > * \s
> > and
> > * backslash space
> > In his overall explanation of the regex,
> > he doesn't distinguish between the two.
>
> Backslash space (\ ) is a literal space. Backslash s (\s) is any of
> a number of white space characters. Most of the time you will not
> need backslash space because a space without a backslash is normally
> a literal space. The only time you need the backslash is if you are
> using the /x option for the regex. When /x is in effect whitespace
> (that is not backslash escaped) is ignored in a regex.
>
> Compare:
>
> 	/^((Jan|Mar|May|Jul|Aug|Oct|Dec) ([ 012]\d|3[01])|(Apr|Jun|Sep|Nov) ([
> 012]\d|30)|Feb ([ 12]\d)) (19\d\d|20\d\d)$/
>
> With:
> 	/^ (
>              (Jan|Mar|May|Jul|Aug|Oct|Dec)\ ([ 012]\d|3[01])
>
>            | (Apr|Jun|Sep|Nov)\ ([ 012]\d|30)
>            |  Feb\ ([ 012]\d)
>
>            )\ (19\d\d|20\d\d)
>          $/x
>
> Both require a space after the month three-letter-name, and then require
> a two character (zero or space padded) date, then require another space
> and the year.
>
> The second one is arranged to make it much easier to read, thanks to the
> /x option. But to match a literal space with /x, the space must either be
> in [square backets] or backslash escaped. I used both methods in this
> example.
>
> If I were to use backslash spaces in the first, it would not change the
> effect of that regex.
>
> Elijah

Hi Elijah,
Thanks for the explanation.
I think I understand now.
Eugene




More information about the Oakland mailing list