Hi Cameron.
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 Feature XYZ : 3 valid 13 free Feature PQR : 0 valid 16 free Feature MNO : 0 valid 2 free """ pattern = 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')] [('21' ,'491')] <<<<< how to achieve this output using *"findall with single line code"*? NOTE "MEMR" values are 0 or more then 0 valid/free values Thanks, Iranna On Fri, Mar 30, 2018 at 12:43 PM, Cameron Simpson <c...@cskk.id.au> wrote: > On 30Mar2018 11:46, Iranna Mathapati <iranna.gan...@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 <c...@cskk.id.au> > -- https://mail.python.org/mailman/listinfo/python-list