re.findall("(100|[0-9][0-9]|[0-9])%", "89%")
Bu sonuç yalnızca [89]
sonucunu verir ve% 89'u geri vermem gerekir. Herhangi bir fikir nasıl yapılır lütfen?Python - re.findall, istenmeyen sonucu döndürüyor
re.findall("(100|[0-9][0-9]|[0-9])%", "89%")
Bu sonuç yalnızca [89]
sonucunu verir ve% 89'u geri vermem gerekir. Herhangi bir fikir nasıl yapılır lütfen?Python - re.findall, istenmeyen sonucu döndürüyor
önemsiz çözüm:
>>> re.findall("(100%|[0-9][0-9]%|[0-9]%)","89%")
['89%']
Daha güzel bir çözüm:
>>> re.findall("(100%|[0-9]{1,2}%)","89%")
['89%']
güzel çözüm:
>>> re.findall("(?:100|[0-9]{1,2})%","89%")
['89%']
>>> re.findall("(?:100|[0-9][0-9]|[0-9])%", "89%")
['89%']
findall
döner sadece captu yakalama gruplar var kırmızı parçalar. Parantezlerin yakalama grubu olmasını önlemek için ?:
kullanın.
' 100 | [0-9] [0-9] | – Bryan
iç grupla olmayan bir yakalama grubunu bir dış grup kullanın:
>>> re.findall("((?:100|[0-9][0-9]|[0-9])%)","89%")
['89%']
bir dize olun; ''% 89 '' –