On 10/12/2010 10:48 PM, Pratik Khemka wrote:
Likewise I want to read the number after the '#' and store it in num. The
problem is that the number can be a 1/2/3/4 digit number. So is there a way in
which I can define num so that it contains the number after '#' irrespective of
how many digits the number is. Because the problem is that the above code will
not work for scenarios when the number is not 2 digits..
Easy with regular expressions:
>>> re.search('(\d{2,4}})', 'foo123bar').group(1)
'123'
That regular expression basically means "match any sequence of 2 to 4
digits (0-9)". Note that this would also match against a sequence that
is not surrounded by non-digits (hence, a sequence that is longer than 4
digits). You could work around that with something like this:
[^\d](\d{2,4})[^\d]
That's the expression used above but encapsulated with '[^\d]', which
stands for "anything but a digit", so the complete expression now
matches against "all sequence of 2 to 4 digits that is surrounded by
non-digits". Note that this expression wouldn't match against a string
that has no surrounding characters. So for example '1234' or '1234a' or
'a1234' won't be matched, but 'a1234b' will be.
Hope this helps :-)
Jonas
--
http://mail.python.org/mailman/listinfo/python-list