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<?php
  $str = '1 12 123';
  $res = preg_replace('#\d#', '!', $str);
?>

Sonuç olarak değişkene aşağıdakiler yazılacaktır:

php'! !! !!!'

Ö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<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\d+#', '!', $str);
?>

Sonuç olarak değişkene aşağıdakiler yazılacaktır:

php'! ! ! 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<?php
  $str = '123abc3@@';
  $res = preg_replace('#\D+#', '!', $str);
?>

Sonuç olarak değişkene aşağıdakiler yazılacaktır:

php'123!3!'

Örnek

Bu örnekte arama kalıbı şu şekildedir: bir kez boşluk karakteri:

php<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\s#', '!', $str);
?>

Sonuç olarak değişkene aşağıdakiler yazılacaktır:

php'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<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\S+#', '!', $str);
?>

Sonuç olarak değişkene aşağıdakiler yazılacaktır:

php'! ! ! ! !'

Ö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<?php
  $str = '1 12 123a Abc @@@';
  $res = preg_replace('#\w+#', '!', $str);
?>

Sonuç olarak değişkene aşağıdakiler yazılacaktır:

php'! ! ! ! @@@'

Ö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:

php$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);

Sonuç olarak değişkene aşağıdakiler yazılacaktır:

php'1!12!123!Abc!'

Pratik Görevler

Задание 1

Bir dize verildi:

php<?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.

Задание 2

Bir dize verildi:

php<?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.

Задание 3

Bir dize verildi:

php<?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.

Задание 4

Bir dize verildi:

php<?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.

Задание 5

Bir dize verildi:

php<?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.

Задание 6

Bir dize verildi:

php<?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.