Shadowfirebird
8/13/2008 8:15:00 AM
Sorry to be the awkward one, but maybe you should consider handling
this programatically, rather than in a regex?
Pros: your code is likely to be easier to understand: that makes it
more maintainable.
Cons: your code will be longer.
On Wed, Aug 13, 2008 at 3:40 AM, Pe=F1a, Botp <botp@delmonte-phil.com> wrot=
e:
> From: Raj Singh [mailto:neeraj.jsr@gmail.com]
> # ([0-9]|0[0-9]|1[012]):([0-9]|0[0-9]|[1-5][0-9])\s*(am|pm)
> # I don't want this regext to match 13:45 PM because the the numerical
> # value before the colon should be limited to 12. How to fix it?
>
> Hi Raj,
>
> the 13 is matching
>
> ([0-9]|0[0-9]|1[012])
> ^^^^^
> this
>
> because the regex will match the 3. the regex did not care if it had a 1 =
before it.
>
> You may want to tell it to not match any preceding digit (or else it be a=
beginning of the string) if you want a stand alone digit.
> eg, you may want to achor/prefix it w the ^ (for beginning of string)
> or \D (to represent a non-digit character)
>
> sample tests,
>
> irb(main):112:0> re =3D /((^|\D)[0-9]|0[0-9]|1[012]):/
> =3D> /((^|\D)[0-9]|0[0-9]|1[012]):/
>
> irb(main):113:0> re =3D~ "1:"
> =3D> 0
> irb(main):114:0> re =3D~ " 1:"
> =3D> 0
> irb(main):117:0> re =3D~ "13:"
> =3D> nil
>
> irb(main):122:0> re =3D~ "01:"
> =3D> 0
> irb(main):123:0> re =3D~ "11:"
> =3D> 0
> irb(main):124:0> re =3D~ "12:"
> =3D> 0
>
> kind regards -botp
>
--=20
All you can do is try to know who your friends are as you head off to
the war / Pick a star on the dark horizon and follow the light