问题
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 tokenn
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']
来源:https://stackoverflow.com/questions/31364367/regex-substring-one-mismatch-in-any-location-of-string