|  | @@ -91,25 +91,28 @@ class Sum(ioex.calcex.Figure):
 | 
	
		
			
				|  |  |      unit = property(get_unit, set_unit)
 | 
	
		
			
				|  |  |      currency = property(get_unit, set_unit)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    value_regex = r"-?\d+([\.,]\d{2})?"
 | 
	
		
			
				|  |  | +    value_regex = r"-?\d+([\.,]\d+)?"
 | 
	
		
			
				|  |  |      currency_regex = r"[^\d\s-]+"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    sum_regex = [
 | 
	
		
			
				|  |  | +        r'^\$?(?P<value>{}) (?P<curr>{})$'.format(
 | 
	
		
			
				|  |  | +            value_regex, currency_regex,
 | 
	
		
			
				|  |  | +        ),
 | 
	
		
			
				|  |  | +        r'^(?P<curr>{}) ?(?P<value>{})$'.format(
 | 
	
		
			
				|  |  | +            currency_regex, value_regex,
 | 
	
		
			
				|  |  | +        ),
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @staticmethod
 | 
	
		
			
				|  |  |      def parse_text(text):
 | 
	
		
			
				|  |  | -        match = re.search(
 | 
	
		
			
				|  |  | -            r'^\$?(?P<value>{}) (?P<curr>{})$'.format(
 | 
	
		
			
				|  |  | -                Sum.value_regex, Sum.currency_regex),
 | 
	
		
			
				|  |  | +        for pattern in Sum.sum_regex:
 | 
	
		
			
				|  |  | +            match = re.search(pattern, text, re.UNICODE)
 | 
	
		
			
				|  |  | +            if match:
 | 
	
		
			
				|  |  | +                break
 | 
	
		
			
				|  |  | +        assert not match is None, '\n{}\ntext: {!r}'.format(
 | 
	
		
			
				|  |  | +            '\n'.join(Sum.sum_regex),
 | 
	
		
			
				|  |  |              text,
 | 
	
		
			
				|  |  | -            re.UNICODE,
 | 
	
		
			
				|  |  |          )
 | 
	
		
			
				|  |  | -        if not match:
 | 
	
		
			
				|  |  | -            match = re.search(
 | 
	
		
			
				|  |  | -                r'^(?P<curr>{}) ?(?P<value>{})$'.format(
 | 
	
		
			
				|  |  | -                    Sum.currency_regex, Sum.value_regex),
 | 
	
		
			
				|  |  | -                text,
 | 
	
		
			
				|  |  | -                re.UNICODE,
 | 
	
		
			
				|  |  | -            )
 | 
	
		
			
				|  |  | -        assert not match is None, text
 | 
	
		
			
				|  |  |          attr = match.groupdict()
 | 
	
		
			
				|  |  |          return Sum(
 | 
	
		
			
				|  |  |              value=locale.atof(attr['value']),
 |