Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.php > #7271

Re: Regular Expression Help

From Denis McMahon <denismfmcmahon@gmail.com>
Newsgroups comp.lang.php
Subject Re: Regular Expression Help
Date 2012-10-08 12:49 +0000
Organization A noiseless patient Spider
Message-ID <k4ui41$qo1$1@dont-email.me> (permalink)
References <k4tkan$ea$1@dont-email.me>

Show all headers | View raw


On Sun, 07 Oct 2012 21:20:21 -0700, Scott Johnson wrote:

> I have two possible values I need to match as the same.
> 
> Name/11 (This one is pulled from the source DB)
> Name/11* (This is what I need to match to with or without the (*))
> 
> The pattern base name is pulled from a DB so I need to find a way to do
> this pragmatically.
> 
> Now some of the names have a forward slash / so I am using hash mark #
> as a delimiter.
> 
> I was able to find the "Name/11" using
> 
> #^Name/11#
> 
> or more specifically;
> 
> $value = "Name/11";
> $pattern = "#^" . $value . "#";
> 
> But as for the (*), no glory.
> I originally tried
> 
> #^Name/11?*#
> #^Name/11\*#
> #^Name/11.*#
> 
> It must be obvious I am having issues finding a way to escape the (*)
> and am not very versed with regex.
> 
> Can someone please explain the best way to escape an optional (*) from a
> string.  Or even point me to a good source.
> 
> I used http://www.regular-expressions.info/tutorial.html but was unable
> to find how to handle the star.
> 
> And if you bing up the *, it sort of gets ignored.

I suspect that this may be the php parser - when it parses a string 
literal declared in double quotes as:

$str = " blah blah \<something> blah blah "

then when the string is read, the \<something> gets converted to a 
character, ie the "\" escape character is processed when php parses the 
string, and hence is no longer there when the string is used by the regex 
function.

If you want to include a \ character to escape the * meta character in 
the stored string that gets passed to the preg function, I think you have 
two choices:

Single quotes:

$str = ' blah blah \* blah blah '

Escape the escape:

$str = " blah blah \\* blah blah "

Working out the "right" combination of single or double quotes, single or 
double escaping etc etc can be a nightmare!

There is another alternative that you might be able to use, which is to 
put the * in a single character class of its own, as inside a character 
class, * is not a meta character:

$str = " blah blah [*] blah blah "

Rgds

Denis McMahon

Back to comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Regular Expression Help Scott Johnson <noonehome@chalupasworld.com> - 2012-10-07 21:20 -0700
  Re: Regular Expression Help Captain Paralytic <paul_lautman@yahoo.com> - 2012-10-08 03:03 -0700
  Re: Regular Expression Help Denis McMahon <denismfmcmahon@gmail.com> - 2012-10-08 12:49 +0000
  Re: Regular Expression Help Denis McMahon <denismfmcmahon@gmail.com> - 2012-10-08 12:59 +0000
  Re: Regular Expression Help BootNic <bootnic.bounce@gmail.com> - 2012-10-08 13:39 -0400
  Re: Regular Expression Help "Álvaro G. Vicario" <alvaro.NOSPAMTHANX@demogracia.com.invalid> - 2012-10-09 12:29 +0200
  Re: Regular Expression Help Scott Johnson <noonehome@chalupasworld.com> - 2012-10-10 03:38 -0700

csiph-web