re — basit düzenli ifadeler

Bu modül, düzenli ifade işlemlerini uygular. Desteklenen düzenli ifade söz dizimi, CPython re modülünün bir alt kümesidir (ve aslında POSIX genişletilmiş düzenli ifadelerinin bir alt kümesidir).

Desteklenen operatörler ve özel diziler şunlardır:

.

Herhangi bir karakterle eşleşir.

[...]

Bir karakter kümesiyle eşleşir. Tekil karakterler ve aralıklar, olumsuzlanmış kümeler dahil (örn. [^a-c]) desteklenir.

^

Dizginin başlangıcıyla eşleşir.

$

Dizginin sonuyla eşleşir.

?

Önceki alt desenin sıfır veya bir tanesiyle eşleşir.

*

Önceki alt desenin sıfır veya daha fazlasıyla eşleşir.

+

Önceki alt desenin bir veya daha fazlasıyla eşleşir.

??

? operatörünün açgözlü olmayan sürümü; sıfır tercih edilerek sıfır veya bir tanesiyle eşleşir.

*?

* operatörünün açgözlü olmayan sürümü; en kısa eşleşme tercih edilerek sıfır veya daha fazlasıyla eşleşir.

+?

+ operatörünün açgözlü olmayan sürümü; en kısa eşleşme tercih edilerek bir veya daha fazlasıyla eşleşir.

|

Bu operatörün sol tarafındaki veya sağ tarafındaki alt desenlerden herhangi biriyle eşleşir.

(...)

Gruplama. Her grup yakalayıcıdır (yakaladığı bir alt dizgiye match.group() yöntemiyle erişilebilir).

(?:...)

Yakalamayan gruplama. Her grup, normal gruplama ile aynı kurallar kullanılarak eşleştirilir, ancak eşleşme nesnesinin bir parçası olmaz.

\d

Rakamla eşleşir. [0-9] ile eşdeğerdir.

\D

Rakam olmayanla eşleşir. [^0-9] ile eşdeğerdir.

\s

Boşluk karakteriyle eşleşir. [ \t-\r] ile eşdeğerdir.

\S

Boşluk olmayan karakterle eşleşir. [^ \t-\r] ile eşdeğerdir.

\w

“Sözcük karakterleri” (yalnızca ASCII) ile eşleşir. [A-Za-z0-9_] ile eşdeğerdir.

\W

“Sözcük karakteri” olmayanlarla (yalnızca ASCII) eşleşir. [^A-Za-z0-9_] ile eşdeğerdir.

\

Kaçış karakteri. Ters eğik çizgiyi izleyen, yukarıda listelenenler dışındaki herhangi bir karakter düz anlamıyla alınır. Örneğin, \* düz anlamıyla * ile eşdeğerdir (* operatörü olarak ele alınmaz). \r, \n vb. ifadelerin özel olarak ele alınmadığını ve düz anlamıyla r, n vb. harflere eşdeğer olacağını unutmayın. Bu nedenle, düzenli ifadeler için ham Python dizgilerinin (r"") kullanılması önerilmez. Örneğin, r"\r\n" düzenli ifade olarak kullanıldığında "rn" ile eşdeğerdir. LF ile takip edilen bir CR karakteriyle eşleşmek için "\r\n" kullanın.

DESTEKLENMEZ:

  • sayılı tekrarlar ({m,n})

  • adlandırılmış gruplar ((?P<name>...))

  • daha gelişmiş onaylamalar (\b, \B)

  • \r, \n gibi özel karakter kaçışları - bunun yerine Python’ın kendi kaçış mekanizmasını kullanın

  • vb.

Örnek:

import re

# As re doesn't support escapes itself, use of r"" strings is not
# recommended.
regex = re.compile("[\r\n]")

regex.split("line1\rline2\nline3\r\n")

# Result:
# ['line1', 'line2', 'line3', '', '']

İşlevler

re.compile(regex_str: str, flags: int = 0) 'regex'

Düzenli ifadeyi derler, regex nesnesi döndürür.

re.search(regex_str: str, string: str) 'match | None'

regex_str ifadesini derler ve bir string içinde arar. match ifadesinin aksine bu, dizgiyi düzenli ifadeyle eşleşen ilk konum için arar (düzenli ifade sabitlenmişse bu hâlâ 0 olabilir).

re.sub(regex_str: str, replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str

regex_str ifadesini derler ve string içinde arar, tüm eşleşmeleri replace ile değiştirir ve yeni dizgiyi döndürür.

replace bir dizgi veya bir işlev olabilir. Bir dizgi ise, ilgili gruba genişletmek için \<number> ve \g<number> biçimindeki kaçış dizileri kullanılabilir (eşleşmeyen gruplar için boş dizgi). replace bir işlev ise, tek bir bağımsız değişken (eşleşme) almalı ve bir değiştirme dizgisi döndürmelidir.

count belirtilirse ve sıfır değilse, değiştirme bu kadar sayıda değiştirme yapıldıktan sonra durur. flags bağımsız değişkeni yok sayılır.

Regex nesneleri

Derlenmiş düzenli ifade. Bu sınıfın örnekleri re.compile() kullanılarak oluşturulur.

class re.regex

re.compile() tarafından döndürülen derlenmiş düzenli ifade nesnesi.

match(string: str, pos: int = 0, endpos: int | None = None) 'match | None'

Bu derlenmiş düzenli ifadeyi, arama bölgesinin başlangıcına sabitlenmiş olarak string üzerine uygular ve bir match nesnesi veya düzenli ifade eşleşmezse None döndürür. Bu, modül düzeyindeki match ifadesinin derlenmiş desen eşdeğeridir ve aynı desen birden çok dizgiye uygulandığında çok daha verimlidir.

İsteğe bağlı pos parametresi, string içinde aramanın başlayacağı bir dizin verir; varsayılan değeri 0‘dır. Bu, dizgiyi dilimlemekle tamamen eşdeğer değildir; '^' desen karakteri, dizginin gerçek başlangıcında ve yalnızca bir yeni satırdan sonraki konumlarda eşleşir, ancak mutlaka aramanın başlayacağı dizinde eşleşmez.

İsteğe bağlı endpos parametresi, string içinde ne kadar uzağa kadar arama yapılacağını sınırlar; sanki dizgi endpos karakter uzunluğundaymış gibi davranır, böylece yalnızca pos ile endpos - 1 arasındaki karakterler aranır. endpos None (varsayılan) ise, dizginin tamamı aranır.

search(string: str, pos: int = 0, endpos: int | None = None) 'match | None'

Bu derlenmiş düzenli ifadenin eşleşme ürettiği ilk konumu bulmak için string boyunca tarar ve bir match nesnesi veya hiçbir konum eşleşmezse None döndürür. Bu, modül düzeyindeki search() işlevinin derlenmiş desen eşdeğeridir ve aynı desen birden çok dizgiye uygulandığında çok daha verimlidir.

İsteğe bağlı pos parametresi, string içinde aramanın başlayacağı bir dizin verir; varsayılan değeri 0‘dır. Bu, dizgiyi dilimlemekle tamamen eşdeğer değildir; '^' desen karakteri, dizginin gerçek başlangıcında ve yalnızca bir yeni satırdan sonraki konumlarda eşleşir, ancak mutlaka aramanın başlayacağı dizinde eşleşmez.

İsteğe bağlı endpos parametresi, string içinde ne kadar uzağa kadar arama yapılacağını sınırlar; sanki dizgi endpos karakter uzunluğundaymış gibi davranır, böylece yalnızca pos ile endpos - 1 arasındaki karakterler aranır. endpos None (varsayılan) ise, dizginin tamamı aranır.

sub(replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str

string içinde bu derlenmiş düzenli ifadeyi arar, tüm eşleşmeleri replace ile değiştirir ve yeni dizgiyi döndürür. Bu, modül düzeyindeki sub() işlevinin derlenmiş desen eşdeğeridir ve aynı desen birden çok dizgiye uygulandığında çok daha verimlidir.

replace bir dizgi veya bir işlev olabilir. Bir dizgi ise, ilgili gruba genişletmek için \<number> ve \g<number> biçimindeki kaçış dizileri kullanılabilir (eşleşmeyen gruplar için boş dizgi). replace bir işlev ise, tek bir bağımsız değişken (eşleşme) almalı ve bir değiştirme dizgisi döndürmelidir.

count belirtilirse ve sıfır değilse, değiştirme bu kadar sayıda değiştirme yapıldıktan sonra durur. flags bağımsız değişkeni yok sayılır.

split(string: str, max_split: int = -1, /) List[str]

Bir string ifadesini düzenli ifade kullanarak böler. max_split verilirse, gerçekleştirilecek azami bölme sayısını belirtir. Dizgilerin listesini döndürür (belirtilmişse en fazla max_split+1 öğe olabilir).

Eşleşme nesneleri

Bir eşleşme nesnesi, başarılı bir eşleşmenin sonucunu tutar.

class re.match(regex_str: str, string: str)

regex_str ifadesini, dizginin başlangıcına sabitlenmiş olarak string ile eşleştirir ve bir eşleşme nesnesi veya eşleşmezse None döndürür. Bu, modül düzeyindeki kısayoldur: re.match(regex_str, string), re.compile(regex_str).match(string) ile eşdeğerdir.

Aynı eşleşme nesnesi ayrıca search() tarafından, derlenmiş desen regex.match() / regex.search() yöntemleri tarafından da döndürülür ve sub() tarafından kullanılan değiştirme işlevine aktarılır.

group(index: int) str

Eşleşen (alt) dizgiyi döndürür. index tüm eşleşme için 0, her yakalayıcı grup için 1 ve üzeridir. Yalnızca sayısal gruplar desteklenir.