import re

#re.search(pattern, string) -> match / None
#re.match(pattern, string) -> match / None
#re.findall(pattern, string) -> [match] / None
#re.sub (pattern, repl, string)


#wzorce


# . -> dowolny znak z wyjatkiem znaku nowej linii
# \d -> dowolna cyfra (0-9)
# \w -> dowollny znak alfanumeryczny (litera , cyfra , znak podkresleia)
# \s -> dowolny znak bialy (spacja , tap , nowa linia)
# \b -> granica slowa
# ^ -> poczatek ciagu lub linii
# $ -> koniec ciagu linii


#kwantyfikatory

'''
* -> zero lub wiecej wystapien poprzedniego znaku lub wyrazenia
+ -> jedno lub wiecej wystapien
? -> zero lub jedno wystapienie
{m,n} -> od m do n wystapienia
'''

#klasa znakow
'''
[] -> zestaw dopuszczalnych znakow, np.[abcd]
[a-z] / [0-9] -> zakresy dopuszczalnych znakow, np.male litery, cyfry 
'''

#grupowanie i alternatywa

'''
() -> grupowanie i tworzenie podwyrazen
| -> alternatywa, jeden z wielu wzorcow 
'''

#znaki specjalne (escape characters)


# \ -> dopasowanie znaku specjalnego, np.zamiast "." mamy "\."


#flagi 

'''
re.IGNORECASE (re.I) -> ignorowanie wielkosci liter
re.MULTILINE (re.M) ->
re.DOTTALL (re.S) ->
re.VERBOSE (re.X) ->
re.ASCII (re.A) -> dopasowanie wylacznie znakow ASCII
'''

zdanie ="Ala ma kota"
wynik = re.match(r"Ala", zdanie)
print(f"wyszukiwanie elementu Ala: {wynik}")
print(wynik.end())


wynik = re.match(r"ala", zdanie, re.IGNORECASE)
print(wynik)

napis = "Ala ma 123 jablka"
wynik = re.search(r"\d+", napis)
print(wynik)

napis = "Ala i Kuba jada na wycieczke do Warszawy"
wynik = re.findall(r"\b[A-Z][a-z]+", napis)
print(wynik) 

text = "valorant to najlepsza strzelanka na swiecie"
pattern = "valorant"
replacement = "CS"
new_text = re.sub(pattern, replacement, text)
print(new_text)