Grup karakter dalam ekspresi reguler PHP

Ada perintah khusus yang memungkinkan untuk memilih sekelompok karakter secara langsung. Perintah \d berarti digit dari 0 hingga 9. Perintah \w menunjukkan digit, huruf Latin, atau tanda garis bawah. Perintah \s menunjukkan spasi atau karakter spasi: spasi, baris baru, tab. Nilai perintah dapat diinversi dengan menulis huruf besar: contohnya, jika \d adalah digit, maka \D adalah bukan digit.

Contoh

Mari kita cari semua digit:

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

Hasilnya, variabel akan berisi nilai berikut:

php'! !! !!!'

Contoh

Operator pengulangan menganggap perintah-grup sebagai satu kesatuan, jadi tanda kurung pengelompokan tidak diperlukan. Dalam contoh berikut, pola pencarian terlihat seperti ini: digit dari 0 hingga 9 satu kali atau lebih:

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

Hasilnya, variabel akan berisi nilai berikut:

php'! ! ! abc @@@'

Contoh

Dalam contoh berikut, pola pencarian terlihat seperti ini: apa saja satu kali atau lebih, tapi bukan digit dari 0 hingga 9:

php<?php
  $str = '123abc3@@';
  $res = preg_replace('#\D+#', '!', $str);
?>

Hasilnya, variabel akan berisi nilai berikut:

php'123!3!'

Contoh

Dalam contoh ini, pola pencarian terlihat seperti ini: karakter spasi satu kali:

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

Hasilnya, variabel akan berisi nilai berikut:

php'1!12!123!abc!@@@'

Contoh

Dalam contoh ini, pola pencarian terlihat seperti ini: BUKAN karakter spasi satu kali atau lebih. Semua substring yang dipisahkan oleh spasi akan diganti dengan '!':

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

Hasilnya, variabel akan berisi nilai berikut:

php'! ! ! ! !'

Contoh

Dalam contoh ini, pola pencarian terlihat seperti ini: digit atau huruf satu kali atau lebih. Semua substring yang terdiri dari digit dan huruf akan diganti dengan '!':

php<?php
  $str = '1 12 123a Abc @@@';
  $res = preg_replace('#\w+#', '!', $str);
?>

Hasilnya, variabel akan berisi nilai berikut:

php'! ! ! ! @@@'

Contoh

Dalam contoh ini, pola pencarian terlihat seperti ini: BUKAN digit dan BUKAN huruf satu kali atau lebih. Dalam kasus kita, definisi ini mencakup '@@@' dan semua spasi (karena mereka juga bukan digit dan bukan huruf). Perhatikan bahwa di akhir ada satu '!' - ke dalamnya telah berubah string ' @@@' - dengan spasi di depannya:

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

Hasilnya, variabel akan berisi nilai berikut:

php'1!12!123!Abc!'

Tugas Praktis

Задание 1

Diberikan string:

php<?php
  $str = 'a1a a2a a3a a4a a5a aba aca';
?>

Tuliskan regex yang akan menemukan string, di mana di sisinya terdapat huruf 'a', dan di antaranya terdapat satu digit.

Задание 2

Diberikan string:

php<?php
  $str = 'a1a a22a a333a a4444a a55555a aba aca';
?>

Tuliskan regex yang akan menemukan string, di mana di sisinya terdapat huruf 'a', dan di antaranya terdapat sejumlah digit berapa pun.

Задание 3

Diberikan string:

php<?php
  $str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>

Tuliskan regex yang akan menemukan string, di mana di sisinya terdapat huruf 'a', dan di antaranya terdapat sejumlah digit berapa pun (termasuk nol digit, yaitu string 'aa').

Задание 4

Diberikan string:

php<?php
  $str = 'avb a1b a2b a3b a4b a5b abb acb';
?>

Tuliskan regex yang akan menemukan string dengan jenis berikut: di sisinya terdapat huruf 'a' dan 'b', dan di antaranya - bukan angka.

Задание 5

Diberikan string:

php<?php
  $str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>

Tuliskan regex yang akan menemukan string dengan jenis berikut: di sisinya terdapat huruf 'a' dan 'b', dan di antaranya - bukan huruf dan bukan digit.

Задание 6

Diberikan string:

php<?php
  $str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>

Tuliskan regex yang akan mengganti semua spasi dengan '!'.