On Mon, Nov 12, 2018 at 4:47 PM <shreedharhardi...@gmail.com> wrote: > Hi, > > Just noticed that the implementation of the grep function in bean-query > doesn't make sense to me from the description: > > class Grep(query_compile.EvalFunction): > "Match a group against a string and return only the matched portion." > __intypes__ = [str, str] > > > def __init__(self, operands): > super().__init__(operands, str) > > > def __call__(self, context): > args = self.eval_args(context) > match = re.search(args[0], args[1]) > if match: > return match.group(0) > > According to the description I think it should do: > if match: > # Get the first matched group; group(0) matches entire string > return match.group(1) > > > or even: > if match: > # Get the last matched group or entire string if there are no > groups > return match.group(len(match.groups)) > > Reference: https://docs.python.org/3/library/re.html#match-objects >
bergamot [hg|default]:~/p/invest/options$ python3 Python 3.7.0 (default, Jul 30 2018, 01:44:42) [GCC 7.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import re >>> re.search('a+', 'cccaadd').group(0) 'aa' >>> 'aa' is the matched portion. WAI If it is implemented as intended, I suppose it would be nice to have an > overloaded grep() function that takes a 3rd parameter of type int, for the > group id. I can send a patch for that if you prefer that, although I think > the second implementation should work for both styles: > > >>> import re > >>> m = re.search('a (b) c', 'asda b c') > >>> m.group(len(m.groups())) > > 'b' > >>> m = re.search('a b c', 'asda b c') > > >>> m.group(len(m.groups())) > 'a b c' > > Thanks, > Shreedhar > Patches welcome. -- > You received this message because you are subscribed to the Google Groups > "Beancount" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to beancount+unsubscr...@googlegroups.com. > To post to this group, send email to beancount@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beancount/5b9484fc-1bd0-4e8c-81b4-f6caa2877cea%40googlegroups.com > <https://groups.google.com/d/msgid/beancount/5b9484fc-1bd0-4e8c-81b4-f6caa2877cea%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to beancount+unsubscr...@googlegroups.com. To post to this group, send email to beancount@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhPBsqHP_9DSC8jnSTDKMiEkhtYuJcmG9_KaStfqBxSpVw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.