Kumpulan aksara dalam ungkapan nalar PHP

Terdapat perintah khas yang membolehkan anda memilih keseluruhan kumpulan aksara sekaligus. Perintah \d bermaksud digit dari 0 hingga 9. Perintah \w menandakan digit, huruf Latin atau tanda garis bawah. Perintah \s menandakan ruang atau aksara jarak: ruang, baris baru, tab. Anda boleh menyongsangkan nilai perintah dengan menulis huruf besar: contohnya, jika \d - digit, maka \D - bukan digit.

Contoh

Mari cari semua digit:

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

Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:

php'! !! !!!'

Contoh

Pengendali pengulangan menganggap perintah-kumpulan sebagai satu keseluruhan, iaitu kurungan pengelompokan tidak diperlukan. Dalam contoh berikut, corak carian kelihatan seperti ini: digit dari 0 hingga 9 sekali atau lebih:

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

Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:

php'! ! ! abc @@@'

Contoh

Dalam contoh berikut, corak carian kelihatan seperti ini: apa sahaja sekali atau lebih kali, tetapi bukan digit dari 0 hingga 9:

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

Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:

php'123!3!'

Contoh

Dalam contoh ini, corak carian kelihatan seperti ini: aksara jarak sekali:

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

Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:

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

Contoh

Dalam contoh ini, corak carian kelihatan seperti ini: BUKAN aksara jarak sekali atau lebih kali. Semua substring, dipisahkan oleh ruang, akan digantikan dengan '!':

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

Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:

php'! ! ! ! !'

Contoh

Dalam contoh ini, corak carian kelihatan seperti ini: digit atau huruf sekali atau lebih kali. Semua substring, terdiri daripada digit dan huruf, akan digantikan dengan '!':

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

Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:

php'! ! ! ! @@@'

Contoh

Dalam contoh ini, corak carian kelihatan seperti ini: BUKAN digit dan BUKAN huruf sekali atau lebih kali. Dalam kes kami, '@@@' dan semua ruang (mereka juga bukan digit dan bukan huruf) memenuhi definisi ini. Sila ambil perhatian bahawa pada akhirnya satu '!' - string ' @@@' - dengan ruang di depan - telah bertukar menjadi nya:

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

Hasilnya, yang berikut akan ditulis ke dalam pembolehubah:

php'1!12!123!Abc!'

Tugas praktikal

Задание 1

Diberikan string:

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

Tulis regex yang akan mencari string, di mana huruf 'a' berada di tepi, dan satu digit di antara mereka.

Задание 2

Diberikan string:

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

Tulis regex yang akan mencari string, di mana huruf 'a' berada di tepi, dan sebarang bilangan digit di antara mereka.

Задание 3

Diberikan string:

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

Tulis regex yang akan mencari string, di mana huruf 'a' berada di tepi, dan sebarang bilangan digit di antara mereka (termasuk dan sifar digit, iaitu string 'aa').

Задание 4

Diberikan string:

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

Tulis regex yang akan mencari string jenis berikut: huruf 'a' dan 'b' berada di tepi, dan di antara mereka - bukan nombor.

Задание 5

Diberikan string:

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

Tulis regex yang akan mencari string jenis berikut: huruf 'a' dan 'b' berada di tepi, dan di antara mereka - bukan huruf dan bukan digit.

Задание 6

Diberikan string:

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

Tulis regex yang akan menggantikan semua ruang dengan '!'.