GNU/Linux >> Belajar Linux >  >> Linux

Bash + Verifikasi Nama Dengan Ekspresi Reguler?

Mengapa ekspresi reguler berikut mencetak valid , ketika namanya hdpworker01 ?

name=hdpworker01
[[ $name =~ worker[[:digit:]] ]] && echo valid

Yang saya coba lakukan adalah mencetak valid hanya jika namanya cocok dengan worker[0-999] .

Contoh hasil yang diharapkan:

  • Untuk name=worker01 :valid
  • Untuk name=hdpworker01 :tidak ada keluaran

Jawaban yang Diterima:

Ekspresi reguler tidak ditambatkan ke awal atau akhir string secara default. Ini berbeda dari mis. pola globbing nama file. Ini berarti bahwa ekspresi dapat cocok di mana saja dalam string yang diberikan.

Agar ekspresi Anda ditambatkan ke awal string, gunakan

^worker[[:digit:]]

Untuk menambahkannya ke ujung string dan memungkinkan satu hingga tiga digit, gunakan

^worker[[:digit:]]{1,3}$

Jika Anda ingin mencocokkan worker10 tapi bukan worker01 atau worker003 (tidak ada angka yang diisi nol), gunakan

^worker([0-9]|[1-9][0-9]{1,2})$

Linux
  1. Definisi Ekspresi Reguler?

  2. Kesalahan Skrip Bash:Ekspresi Integer Diharapkan?

  3. Memecahkan masalah nama host yang diberikan bukan kesalahan yang valid

  1. Bagaimana saya tahu nama file skrip dalam skrip Bash?

  2. Mengidentifikasi nama sinyal yang diterima di Bash

  3. Bagaimana cara menghapus atau menghapus fungsi bash?

  1. Ekspresi Reguler untuk menemukan karakter ganda di Bash

  2. Masalah ekspresi reguler di Bash:[^negate] sepertinya tidak berfungsi

  3. rentang nomor ekstrak grep