Regex substring one mismatch in any location of st

2019-07-14 06:15发布

问题:

Can someone explain why the code below returns an empty list:

>>> import re
>>> m = re.findall("(SS){e<=1}", "PSSZ")
>>> m
[]

I am trying to find the total number of occurrences of SS (and incorporating the possibility of up to one mismatch) within PSSZ.

I saw a similar example of code here: Search for string allowing for one mismatch in any location of the string

回答1:

You need to remove e<= chars present inside the range quantifier. Range quantifier must be of ,

  • {n} . Repeats the previous token n number of times.
  • {min,max} Repeats the previous token from min to max times.

It would be,

m = re.findall("(SS){1}", "PSSZ")

or

m = re.findall(r'SS','PSSZ')

Update:

>>> re.findall(r'(?=(S.|.S))', 'PSSZ')
['PS', 'SS', 'SZ']