<Sebelum | Contents [show] | Seterusnya>
? - Padankan Elemen Sifar Atau Satu Kali
Pengkuantiti ini bermaksud, sebenarnya, "Jadikan elemen sebelumnya sebagai pilihan." Katakan kami ingin menyemak nombor telefon untuk kesahihan dan kami menganggap nombor telefon itu sah jika ia sepadan dengan salah satu daripada dua borang ini:
(nnn) nnn-nnnn nnn nnn-NNNN
di mana "n” ialah angka. Kita boleh membina ungkapan biasa seperti ini:
^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$
Dalam ungkapan ini, kami mengikuti aksara kurungan dengan tanda soal untuk menunjukkan bahawa ia akan dipadankan dengan sifar atau satu masa. Sekali lagi, kerana tanda kurungan biasanya
metacharacters (dalam ERE), kami mendahului mereka dengan garis serong ke belakang untuk menyebabkan mereka dianggap sebagai literal.
Jom cuba:
[saya@linuxbox ~]$ echo "(555) 123-4567" | grep -E '^\(?[0-9][0-9][0-9]
\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'
(555) 123-4567
[saya@linuxbox ~]$ gema "555 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)
? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'
555-123 4567
[saya@linuxbox ~]$ gema "AAA 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)
? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'
[saya@linuxbox ~]$
[saya@linuxbox ~]$ echo "(555) 123-4567" | grep -E '^\(?[0-9][0-9][0-9]
\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'
(555) 123-4567
[saya@linuxbox ~]$ gema "555 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)
? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'
555-123 4567
[saya@linuxbox ~]$ gema "AAA 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)
? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'
[saya@linuxbox ~]$
Di sini kita melihat bahawa ungkapan itu sepadan dengan kedua-dua bentuk nombor telefon, tetapi tidak sepadan dengan satu yang mengandungi aksara bukan angka.