PHP'de Düzenli İfadelerde Karakter Grupları
Bir seferde tüm karakter gruplarını seçmeye izin veren
özel komutlar vardır. \d komutu 0 ile 9
arasında bir rakam anlamına gelir. \w komutu bir rakamı,
Latin harfini veya alt çizgi işaretini belirtir. \s
komutu bir boşluk veya boşluk karakterini belirtir:
boşluk, satır sonu, sekme. Komutun anlamını büyük harf
yazarak tersine çevirebilirsiniz: örneğin, \d bir rakam ise,
\D rakam olmayan anlamına gelir.
Örnek
Tüm rakamları bulalım:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Sonuç olarak değişkene aşağıdakiler yazılacaktır:
'! !! !!!'
Örnek
Tekrarlama operatörleri, komut gruplarını bir bütün
olarak kabul eder, yani gruplandırma parantezlerine
ihtiyaç yoktur. Aşağıdaki örnekte arama kalıbı
şu şekildedir: 0 ile 9 arasında bir rakam
bir veya daha fazla kez:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Sonuç olarak değişkene aşağıdakiler yazılacaktır:
'! ! ! abc @@@'
Örnek
Aşağıdaki örnekte arama kalıbı şu şekildedir:
bir veya daha fazla kez herhangi bir şey,
ancak 0 ile 9 arasında bir rakam değil:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Sonuç olarak değişkene aşağıdakiler yazılacaktır:
'123!3!'
Örnek
Bu örnekte arama kalıbı şu şekildedir: bir kez boşluk karakteri:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Sonuç olarak değişkene aşağıdakiler yazılacaktır:
'1!12!123!abc!@@@'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
boşluk karakteri OLMAYAN bir veya daha fazla kez.
Boşluklarla ayrılmış tüm alt dizeler
'!' ile değiştirilecektir:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Sonuç olarak değişkene aşağıdakiler yazılacaktır:
'! ! ! ! !'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
bir veya daha fazla kez rakam veya harf.
Rakam ve harflerden oluşan tüm alt dizeler
'!' ile değiştirilecektir:
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Sonuç olarak değişkene aşağıdakiler yazılacaktır:
'! ! ! ! @@@'
Örnek
Bu örnekte arama kalıbı şu şekildedir:
rakam OLMAYAN ve harf OLMAYAN bir veya daha fazla kez.
Bu tanıma bizim durumumuzda '@@@'
ve tüm boşluklar (sonuçta onlar da rakam veya harf değiller) girer.
Sonunda bir tane '!' olduğuna dikkat edin -
içine ' @@@' dizesi - önünde boşlukla birlikte
dönüştürülmüştür:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Sonuç olarak değişkene aşağıdakiler yazılacaktır:
'1!12!123!Abc!'
Pratik Görevler
Bir dize verildi:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Kenarlarında 'a' harflerinin bulunduğu
ve aralarında bir rakam olan dizeleri bulacak
bir düzenli ifade yazın.
Bir dize verildi:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Kenarlarında 'a' harflerinin bulunduğu
ve aralarında herhangi bir sayıda rakam olan
dizeleri bulacak bir düzenli ifade yazın.
Bir dize verildi:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Kenarlarında 'a' harflerinin bulunduğu
ve aralarında herhangi bir sayıda rakam (sıfır rakam
dahil, yani 'aa' dizesi) olan dizeleri
bulacak bir düzenli ifade yazın.
Bir dize verildi:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Aşağıdaki türdeki dizeleri bulacak bir düzenli ifade yazın:
Kenarlarında 'a' ve 'b' harfleri bulunur,
ve aralarında - bir rakam olmayan.
Bir dize verildi:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Aşağıdaki türdeki dizeleri bulacak bir düzenli ifade yazın:
Kenarlarında 'a' ve 'b' harfleri bulunur,
ve aralarında - bir harf veya rakam olmayan.
Bir dize verildi:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Tüm boşlukları '!' ile değiştirecek
bir düzenli ifade yazın.