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.
\dRakamla eşleşir.
[0-9]ile eşdeğerdir.\DRakam olmayanla eşleşir.
[^0-9]ile eşdeğerdir.\sBoşluk karakteriyle eşleşir.
[ \t-\r]ile eşdeğerdir.\SBoş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,\nvb. ifadelerin özel olarak ele alınmadığını ve düz anlamıylar,nvb. 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,\ngibi özel karakter kaçışları - bunun yerine Python’ın kendi kaçış mekanizmasını kullanınvb.
Ö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.search(regex_str: str, string: str) 'match | None'¶
regex_str ifadesini derler ve bir string içinde arar.
matchifadesinin 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
matchnesnesi veya düzenli ifade eşleşmezseNonedöndürür. Bu, modül düzeyindekimatchifadesinin 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 - 1arasındaki karakterler aranır. endposNone(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
matchnesnesi veya hiçbir konum eşleşmezseNonedöndürür. Bu, modül düzeyindekisearch()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 - 1arasındaki karakterler aranır. endposNone(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.
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
Nonedö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ş desenregex.match()/regex.search()yöntemleri tarafından da döndürülür vesub()tarafından kullanılan değiştirme işlevine aktarılır.