Regex Doubts

Cameron Simpson cs at cskk.id.au
Fri Mar 30 03:13:29 EDT 2018


On 30Mar2018 11:46, Iranna Mathapati <iranna.gani28 at gmail.com> wrote:
>how to achieve fallowing expected output?
>
>str_output= """
>
>MOD1 memory                              : 2 valid    1790 free
>MOD2 memory                              : 128 valid   128 free
>UDP Aware *MEMR*                            : 0 valid   0 free *MEMR
>                                   : 21 valid   491 free
><<<<<expecting *
>Feature XYZ                              : 3 valid    13 free
>Feature PQR                       : 0 valid 16 free
>Feature MNO                        : 0 valid 2 free
>
> """
>
>i am going to grep MEM values alone and i have tried fallowing Regex:
>
>re.findall(r'MEMR\s+\:\s+([0-9]+)\s+valid \s+([0-9]+)\s+free ', str_output)
>
>it produce fallowing output::
>[('0', '0'), ('21', '491')]
>
>Expected output and i am expecting fallowing output::
>*[('21' ,'491')]  <<<<< how to achieve this output?*

I get an empty list with your str_output text. Is it intact above? Or modified 
by the mail program?

That said, I see that your regexp ends with "free ". Are you sure there is a 
space after the word "free" in your input data? There doesn't seems to be one 
in your email. Because your regexp requires a final space, if there isn't one 
in the input then it will not match.

It may be that your original data has this final space, hence your matches.

In which case, there are two "MEMR" words in your input data. Are there really 
asterisks ("*") in the input data? Or are they for emphasis? I ask because 
you've got some lines ending in "::" in your email, which is suggestive of some 
formatting.

So, supposing that the asterisks are not there, you have two "MEMR : N valid   
M free" strings up there. It sounds like you want only the nonzero one. Notice 
that your regexp includes:

  [0-9]+

to match 1 or more digits. If you don't want to recognise zero values, consider 
that any such number doesn't commence with a "0" digit. How would you modify 
the regexp above to be more picky?

Cheers,
Cameron Simpson <cs at cskk.id.au>



More information about the Python-list mailing list