Python RegEx: re.match(), re.search(), re.findall() Örnekle
Normal İfade Nedir? Python?
A Normal İfade (RE) bir programlama dilinde, bir arama modelini tanımlamak için kullanılan özel bir metin dizesidir. Kod, dosyalar, günlük, elektronik tablolar ve hatta belgeler gibi metinlerden bilgi çıkarmak için son derece kullanışlıdır.
Kullanırken Python Düzenli ifadede ilk olarak fark edilmesi gereken şey, her şeyin esasen bir karakter olduğudur ve dize olarak da adlandırılan belirli bir karakter dizisiyle eşleşmesi için desenler yazıyoruz. Klavyelerinizde bulunan harfler ASCII veya Latin harfleridir ve yabancı metni eşleştirmek için Unicode kullanılır. Rakamları, noktalama işaretlerini ve $#@!% gibi tüm özel karakterleri içerir.
Örneğin, Python düzenli ifade, bir programa dizeden belirli bir metni aramasını ve ardından sonucu buna göre yazdırmasını söyleyebilir. İfade şunları içerebilir
- Metin eşleştirme
- Tekrarlama
- Dallanma
- Desen kompozisyonu vb.
Normal ifade veya RegEx'te Python RE (RE'ler, normal ifadeler veya normal ifade deseni) aracılığıyla içe aktarılırken gösterilir yeniden modül. Python kütüphaneler aracılığıyla düzenli ifadeyi destekler. RegEx girişi Python gibi çeşitli şeyleri destekler Değiştiriciler, Tanımlayıcılar ve Boşluk karakterleri.
| Tanımlayıcıları | Düzenleyiciler | Beyaz boşluk karakterleri | Kaçış gerekli |
|---|---|---|---|
| \d= herhangi bir sayı (bir rakam) | \d bir rakamı temsil eder. Örn: \d{1,5} 1,5 gibi 424,444,545 arasındaki rakamı bildirir. | \n = yeni satır | . + * ? [] $ ^ () {} | \ |
| \D= sayıdan başka herhangi bir şey (rakam olmayan) | + = 1 veya daha fazlasıyla eşleşir | \s= boşluk | |
| \s = boşluk (sekme, boşluk, yeni satır vb.) |
? = 0 veya 1 ile eşleşir | \t =sekme | |
| \S= boşluk dışında herhangi bir şey | * = 0 veya daha fazla | \e = kaçış | |
| \w = harfler (“_” dahil olmak üzere alfasayısal karakterlerle eşleşir) | $ bir dizenin sonuyla eşleşir | \r = satır başı | |
| \W =harfler dışında herhangi bir şey ("_" hariç alfanümerik olmayan bir karakterle eşleşir) | ^ bir dizenin başlangıcını eşleştir | \f= form beslemesi | |
| . = harfler (noktalar) dışında herhangi bir şey | | ya da x/y ile eşleşir | ------ | |
| \b = yeni satır dışında herhangi bir karakter | [] = aralık veya “varyans” | ------ | |
| \. | {x} = önceki kodun bu miktarı | ------ |
Normal İfade(RE) Söz Dizimi
import re
- “re” modülü dahildir Python öncelikli olarak dize arama ve düzenleme için kullanılır
- Ayrıca web sayfası için de sıklıkla kullanılır”Kazıma” (web sitelerinden büyük miktarda veri çıkarın)
İfade eğitimine (w+) ve (^) ifadelerini kullanarak bu basit alıştırmayla başlayacağız.
w+ ve ^ İfadesi Örneği
- “^”: Bu ifade bir dizenin başlangıcıyla eşleşiyor
- “w+“: Bu ifade dizedeki alfasayısal karakterle eşleşir
Burada bir göreceğiz Python RegEx Kodumuzda w+ ve ^ ifadesini nasıl kullanabileceğimize dair örnek. re.findall() fonksiyonunu ele alıyoruz. Python, bu eğitimin ilerleyen kısımlarında bir süreliğine sadece \w+ ve \^ ifadelerine odaklanacağız.
Örneğin “guru99, eğitim eğlencelidir” dizimiz için kodu w+ ve^ ile çalıştırırsak “guru99” çıktısını verecektir.
import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+",xx) print(r1)
Unutmayın, w+'dan +işaretini kaldırırsanız çıktı değişecek ve yalnızca ilk harfin ilk karakterini verecektir, yani [g]
re.split işlevindeki \s ifadesinin örneği
- “s”: Bu ifade string içerisinde boşluk oluşturmak için kullanılır.
Bu RegEx'in nasıl olduğunu anlamak için Python basit bir şeyle başlıyoruz Python RegEx Bölünmüş işlev örneği. Örnekte “re.split” fonksiyonunu kullanarak her kelimeyi böldük ve aynı zamanda string içindeki her kelimenin ayrı ayrı ayrıştırılmasını sağlayan \s ifadesini kullandık.
Bu kodu çalıştırdığınızda size ['we', 'are', 'splitting', 'the', 'words'] çıktısını verecektir.
Şimdi s'den “\” işaretini kaldırırsanız ne olacağını görelim. Çıktıda 's' alfabesi yok, bunun nedeni string'den '\'yi kaldırmış olmamız ve “s”yi normal bir karakter olarak değerlendirip, stringin içinde “s”yi bulduğu yerde kelimeleri bölüyoruz.
Benzer şekilde başka diziler de var Python çeşitli şekillerde kullanabileceğiniz normal ifade Python \d,\D,$,\.,\b vb. gibi.
İşte kodun tamamı
import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+", xx) print((re.split(r'\s','we are splitting the words'))) print((re.split(r's','split the words')))
Daha sonra düzenli ifadelerle kullanılan yöntem türlerini göreceğiz. Python.
Düzenli ifade yöntemlerini kullanma
“Re” paketi, bir giriş dizesinde gerçekte sorgular gerçekleştirmek için çeşitli yöntemler sağlar. Yeniden yöntemleri göreceğiz Python:
- Rövanş()
- araştırma()
- yeniden bul()
not: Düzenli ifadelere dayanarak, Python iki farklı ilkel işlem sunar. Eşleşme yöntemi yalnızca dizenin başında bir eşleşme olup olmadığını kontrol ederken, arama dizenin herhangi bir yerinde bir eşleşme olup olmadığını kontrol eder.
Rövanş()
Rövanş() re in'in işlevi Python düzenli ifade modelini arayacak ve ilk oluşumu döndürecektir. Python RegEx Match yöntemi yalnızca dizenin başındaki eşleşmeyi denetler. Yani ilk satırda bir eşleşme bulunursa eşleşme nesnesini döndürür. Ancak başka bir satırda bir eşleşme bulunursa, Python RegEx Match işlevi null değerini döndürür.
Örneğin, aşağıdaki kodu ele alalım: Python re.match() işlevi. “w+” ve “\W” ifadesi 'g' harfiyle başlayan kelimelerle eşleşecek ve sonrasında 'g' ile başlamayan hiçbir şey tanımlanmayacaktır. Listedeki veya dizedeki her öğenin eşleşmesini kontrol etmek için forloop'u bu şekilde çalıştırırız. Python re.match() Örnek.
re.search(): Metinde Desen Bulma
araştırma() işlevi normal ifade modelini arayacak ve ilk oluşumu döndürecektir. Farklı Python re.match(), giriş dizesinin tüm satırlarını kontrol edecektir. Python re.search() işlevi, model bulunduğunda bir eşleşme nesnesi döndürür ve model bulunmazsa "null" değerini döndürür
Arama() nasıl kullanılır?
Search() işlevini kullanmak için içe aktarmanız gerekir. Python Önce modülü yeniden oluşturun ve ardından kodu yürütün. Python re.search() işlevi, taramak için “deseni” ve “metni” ana dizimizden alır
Örneğin burada "Yazılım testi" "guru99" adlı iki değişmez dizeyi "Yazılım" metin dizesinde arıyoruz. Test yapmak eğlencelidir”. “Yazılım testi” için eşleşmeyi bulduk, dolayısıyla çıktısını döndürüyor Python re.search() Örneğin "bir eşleşme bulundu", "guru99" kelimesi için dizede bulunamadık ve bu nedenle çıktıyı "Eşleşme yok" olarak döndürüyor.
yeniden bul()
hepsini bul() modülü, belirli bir kalıpla eşleşen "tüm" oluşumları aramak için kullanılır. Buna karşılık, search() modülü yalnızca belirtilen kalıpla eşleşen ilk örneği döndürür. findall() dosyanın tüm satırları üzerinde yinelenecek ve örtüşmeyen tüm desen eşleşmelerini tek bir adımda döndürecektir.
re.findall() nasıl kullanılır? Python?
Burada bir e-posta adresleri listemiz var ve listeden tüm e-posta adreslerinin alınmasını istiyoruz, re.findall() yöntemini kullanıyoruz PythonListedeki tüm e-posta adreslerini bulacaktır.
İşte re.findall() örneğinin tam kodu
import re
list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
z = re.match("(g\w+)\W(g\w+)", element)
if z:
print((z.groups()))
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
print('Looking for "%s" in "%s" ->' % (pattern, text), end=' ')
if re.search(pattern, text):
print('found a match!')
else:
print('no match')
abc = '[email protected], [email protected], [email protected]'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
print(email)
Python Bayraklar
çok Python Regex Yöntemleri ve Regex işlevleri, Bayraklar adı verilen isteğe bağlı bir bağımsız değişkeni alır. Bu bayraklar verilenin anlamını değiştirebilir Python Regex deseni. Bunları anlamak için bu Bayraklardan bir veya iki örnek göreceğiz.
Kullanılan çeşitli bayraklar Python içerir
| Regex Bayrakları için Sözdizimi | Bu bayrak ne işe yarıyor |
|---|---|
| [yeniden M] | Başlangıç/bitiş yapın her satırı dikkate alın |
| [yeniden.I] | Büyük/küçük harf dikkate alınmaz |
| [yeniden S] | Yapmak [ . ] |
| [yeniden U] | { \w,\W,\b,\B}'nin Unicode kurallarına uymasını sağlayın |
| [yeniden L] | {\w,\W,\b,\B} öğesinin yerel ayarı takip etmesini sağlayın |
| [yeniden X] | Regex'te yoruma izin ver |
re.M veya Çok Satırlı Bayrak Örneği
Çok satırlıda desen karakteri [^] dizenin ilk karakteriyle ve her satırın başlangıcıyla (her yeni satırdan hemen sonra) eşleşir. Küçük "w" ifadesi boşluğu karakterlerle işaretlemek için kullanılırken. Kodu çalıştırdığınızda ilk değişken "k1" yalnızca guru99 kelimesi için 'g' karakterini yazdırırken, çok satırlı bayrağı eklediğinizde dizedeki tüm öğelerin ilk karakterlerini getirir.
İşte kod
import re xx = """guru99 careerguru99 selenium""" k1 = re.findall(r"^\w", xx) k2 = re.findall(r"^\w", xx, re.MULTILINE) print(k1) print(k2)
- “gur99…” dizisi için xx değişkenini tanımladık. kariyerguru99….selenyum”
- Kodu çok satırlı bayraklar kullanmadan çalıştırın, satırlardan yalnızca 'g' çıktısını verir
- Kodu “multiline” bayrağıyla çalıştırın, 'k2' yazdırdığınızda çıktıyı 'g', 'c' ve 's' olarak verir
- Yukarıdaki örnekte çoklu satır eklemeden önce ve sonra görebildiğimiz fark.
Aynı şekilde diğerlerini de kullanabilirsiniz Python re.U (Unicode), re.L (Yerel ayarı takip et), re.X (Yoruma İzin Ver) vb. gibi bayraklar.
Python 2 Örnek
Yukarıdaki kodlar Python 3 örnek, Eğer koşmak istiyorsanız Python 2 Lütfen aşağıdaki kodu dikkate alın.
# Example of w+ and ^ Expression
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+",xx)
print r1
# Example of \s expression in re.split function
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+", xx)
print (re.split(r'\s','we are splitting the words'))
print (re.split(r's','split the words'))
# Using re.findall for text
import re
list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
z = re.match("(g\w+)\W(g\w+)", element)
if z:
print(z.groups())
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
print 'Looking for "%s" in "%s" ->' % (pattern, text),
if re.search(pattern, text):
print 'found a match!'
else:
print 'no match'
abc = '[email protected], [email protected], [email protected]'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
print email
# Example of re.M or Multiline Flags
import re
xx = """guru99
careerguru99
selenium"""
k1 = re.findall(r"^\w", xx)
k2 = re.findall(r"^\w", xx, re.MULTILINE)
print k1
print k2
Sınayın Python bilgi
1. Bir dizedeki bir desenin tüm oluşumlarını bulmak için hangi yöntem kullanılır?
- araştırma()
- Rövanş()
- yeniden bul()
- yeniden böl()
2. \d karakter sınıfı düzenli ifadelerde neyi temsil eder?
- Herhangi bir rakam (0-9)
- Rakam olmayan herhangi bir karakter
- Herhangi bir boşluk karakteri
- Herhangi bir harf veya rakam
3. Boşluklara dayalı bir dizeyi bölmek için hangi fonksiyonu kullanırsınız?
- re.split(r'\s', dize)
- re.findall(r'\w+', dize)
- re.match(r'\s+', dize)
- re.split(r'\w+', dize)
4. re.match() ile re.search() arasındaki temel fark nedir?
- re.match() bir dizenin başında bir desen arar, re.search() ise dizenin herhangi bir yerinde bir desen arar.
- re.match() tüm eşleşmeleri döndürürken, re.search() ilk eşleşmeyi döndürür.
- re.search(), re.match()'ten daha hızlıdır.
- Her iki fonksiyon da aynı şekilde davranır.
ÖZET
Bir düzenli ifade Programlama dili bir arama modelini tanımlamak için kullanılan özel bir metin dizesidir. Rakamları, noktalama işaretlerini ve $#@!% gibi tüm özel karakterleri içerir. İfade değişmez değer içerebilir
- Metin eşleştirme
- Tekrarlama
- Dallanma
- Desen kompozisyonu vb.
In Python, normal bir ifade RE (RE'ler, normal ifadeler veya normal ifade deseni) aracılığıyla gömülü olarak gösterilir Python yeniden modül.
- “re” modülü dahildir Python öncelikli olarak dize arama ve düzenleme için kullanılır
- Ayrıca “Kazıma” web sayfası için de sıklıkla kullanılır (web sitelerinden büyük miktarda veri çıkarmak)
- Normal İfade Yöntemleri şunları içerir: re.match(),re.search()& re.findall()
- Diğer Python RegEx değiştirme yöntemleri, re'deki eşleşen dizeleri değiştirmek için kullanılan sub() ve subn()'dir.
- Python Bayraklar çok Python Regex Yöntemleri ve Regex işlevleri, Bayraklar adı verilen isteğe bağlı bir bağımsız değişkeni alır
- Bu bayraklar verilen Regex modelinin anlamını değiştirebilir
- Çeşitli Python Regex Yöntemlerinde kullanılan bayraklar re.M, re.I, re.S vb.'dir.







