So I am scanning through chat logs looking for messages where I
mentioned "points". My current regex is:
text.scan /^(.*)([-+]?[0-9]+\s+points?)(.*)$/i
So I'd like each match in 3 groups:
1. The message up until the part containing the points
2. The points part. This could have a + or - prefix, 1 or more digits,
and an optional s after point
3. The rest of the message line.
My problem is, the (.*) is eating up parts that I would like to appear
in group 2. I just bought a book on regex but I'm not very far yet
Any help would be appreciated!
You could try matching anything that's not a -, + or number in your first
group, e.g.
([^-+0-9]*)
Note that I'm assuming Ruby uses Perl Compatible Regular Expressions
Cheers,
Paul
···
On Wed, Feb 20, 2008 at 8:15 PM, J. Cooper <nefigah@gmail.com> wrote:
So I am scanning through chat logs looking for messages where I
mentioned "points". My current regex is:
text.scan /^(.*)([-+]?[0-9]+\s+points?)(.*)$/i
So I'd like each match in 3 groups:
1. The message up until the part containing the points
2. The points part. This could have a + or - prefix, 1 or more digits,
and an optional s after point
3. The rest of the message line.
My problem is, the (.*) is eating up parts that I would like to appear
in group 2. I just bought a book on regex but I'm not very far yet
Any help would be appreciated!
--
Posted via http://www.ruby-forum.com/\.
My current regex is:
text.scan /^(.*)([-+]?[0-9]+\s+points?)(.*)$/i
[...]
My problem is, the (.*) is eating up parts that I would like to appear
in group 2.
Make it non-greedy: (.*?)
HTH,
Sebastian
···
--
NP: Anathema - Cries On The Wind
Jabber: sepp2k@jabber.org
ICQ: 205544826