⊗ppPmRgEP 254 of 447 menu

PHP'de Düzenli İfadelerde Yakalama Grupları

Yakalama gruplarının içeriği yalnızca değiştirme dizesinde değil, aynı zamanda düzenli ifadenin kendisinde de kullanılabilir: bir yakalama grubuna bir şey koyabiliriz ve sonra doğrudan düzenli ifadede, burada o yakalama grubunun içeriğinin olması gerektiğini söyleyebiliriz.

Yakalama gruplarının içeriği, başlarında ters eğik çizgi bulunan numaralarıyla erişilebilir. Örneğin, sıfırıncı yakalama grubu şu şekilde erişilebilir: \0, birinci yakalama grubu şu şekilde - \1, ikinci - \2 ve bu şekilde devam eder.

Yukarıda yazılanların hepsinin sizin için şu an oldukça belirsiz olduğundan eminim. Bu şaşırtıcı değil, çünkü yakalama grupları düzenli ifadelerin en anlaşılması zor yeridir. Haydi örneklerle anlamaya çalışalım.

Örnek

Diyelim ki şöyle bir dizgemiz var:

<?php $str = 'aa bb cd ef'; ?>

Şimdi içinde arka arkaya iki tane aynı harfin bulunduğu tüm yerleri bulalım. Görevi çözmek için herhangi bir harfi arayacağız, onu bir yakalama grubuna koyacağız ve sonra bir sonraki karakterin bu yakalama grubunun içeriği olup olmadığını kontrol edeceğiz:

<?php $res = preg_replace('#([a-z])\1#', '!', $str); ?>

Sonuç olarak değişkene şunlar yazılacak:

'! ! cd ef'

Örnek

Diyelim ki şöyle bir dizgemiz var:

<?php $str = 'asxca buzxb csgd'; ?>

Şimdi içinde ilk ve son harfin aynı olduğu tüm kelimeleri bulalım. Görevi çözmek için şu kalıbı yazacağız: bir harf, ardından bir veya daha fazla harf ve sonra ilk harfle aynı olan bir harf:

<?php $res = preg_replace('#([a-z])[a-z]+\1#', '!', $str); ?>

Sonuç olarak değişkene şunlar yazılacak:

'! ! csgd'

Örnek

\1 yerine \g1 da yazılabilir:

<?php $res = preg_replace('#([a-z])[a-z]+\g1#', '!', $str); ?>

Örnek

Ayrıca \g{1} da yazılabilir:

<?php $res = preg_replace('#([a-z])[a-z]+\g{1}#', '!', $str); ?>

Örnek

Küme parantezleri içinde negatif sayılar belirtilebilir. Bu durumda yakalama grupları sondan sayılmaya başlanacaktır:

<?php $res = preg_replace('#([a-z])([a-z])\g{-2}#', '!', $str); ?>

Pratik Görevler

Bir dize verildi:

<?php $str = 'aaa bbb ccc xyz'; ?>

İçinde arka arkaya üç aynı harfin bulunduğu tüm alt dizileri bulun.

Bir dize verildi:

<?php $str = 'a aa aaa abab bbbb'; ?>

İçinde arka arkaya iki veya daha fazla aynı harfin bulunduğu tüm alt dizileri bulun.

Bir dize verildi:

<?php $str = 'aaa aaa bbb bbb ccc ddd'; ?>

İçinde arka arkaya iki aynı kelimenin bulunduğu tüm alt dizileri bulun.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet