Python: how to substitute and know whether it matched

前端 未结 3 460
温柔的废话
温柔的废话 2021-01-05 00:53

I know that re.sub(pattern, repl,text) can substitute when pattern matches, and then return the substitute.

My code is:

text = re.sub(p         


        
相关标签:
3条回答
  • 2021-01-05 01:25

    Use re.subn

    Perform the same operation as sub(), but return a tuple (new_string, number_of_subs_made).

    and then check the number of replacements that were made. For example:

    text2, numReplacements = re.subn(pattern, repl, text1)
    if numReplacements:
        # did match
    else:
        # did not match
    
    0 讨论(0)
  • 2021-01-05 01:27

    The repl parameter can also be a function which takes an RE match object and returns what the replacement should be; this function is not called if the text doesn't match. You could use that to do what you needed then just return a constant string you want to replace it with. This would cut down on an unneeded second check against the RE.

    0 讨论(0)
  • 2021-01-05 01:29

    "Whether string contains numbers":

    for text1 in ('abc123def', 'adsafasdfafdsafqw', 'fsadfoi81we'):
        print("Text %s %s numbers." %
              ((text1, )  + (
                  ('does not contain',) if not any(c.isdigit() for c in text1)
                   else ('contains',))
               ))
    
    0 讨论(0)
提交回复
热议问题