'(\d+)' asRegex��
search: 'value: 6474 mm';
subexpression: 1.
answers 6474.

See��
- http://www.pharocasts.com/2010/05/dynamic-finder-with-doesnotunderstand.html
-��https://gforge.inria.fr/frs/download.php/26818/Regex.pdf

Laurent Laffont -��@lolgzs

Pharo Smalltalk Screencasts: http://www.pharocasts.com/
Blog: http://magaloma.blogspot.com/


On Fri, Feb 11, 2011 at 7:52 PM, Nick Ager <nick.ager@gmail.com> wrote:
Hi,

Is it possible to make a regular expression which matches only part of a string. For example:��

testRegex
| toSearch matcher doesMatch match1 match2 numMatches |
toSearch := 'value: 6474 mm'.

matcher := RxMatcher forString: ' (\d+) '.
doesMatch := matcher matches: toSearch.
numMatches := matcher subexpressionCount.
match1 := (matcher subexpression: 1).
match2 := (matcher subexpression: 2).
self halt.

which results in:
���� doesMarch = false
���� numMatches = 2
���� match1 = nil
���� match2 = nil

However if I replace the regular expression with:��'.* (\d+) .*' so the whole string is matched I see

���� doesMarch = true
���� numMatches = 2
���� match1 =��'value: 6474 mm'
���� match2 = '6474'

I can always pad my sub-matches with '.*', but I wondered if I'm missing a trick to make the Regex work with substring matches

Thanks

Nick��