Saya memiliki regex yang saya pikir berfungsi dengan benar sampai sekarang. Saya perlu mencocokkan pada karakter opsional. Mungkin ada di sana atau tidak.
Berikut ini dua string. String teratas dicocokkan sedangkan yang lebih rendah tidak. Tidak adanya satu huruf di string bawah adalah apa yang membuatnya gagal.
Saya ingin mendapatkan satu huruf setelah 5 digit awal jika ada dan jika tidak, terus dapatkan sisa string. Surat ini bisa A-Z
.
Jika saya menghapus ([A-Z]{1}) +.*? +
dari regex, itu akan cocok dengan semua yang saya butuhkan kecuali surat itu tetapi itu agak penting.
20000 K Q511195DREWBT E00078748521
30000 K601220PLOPOH Z00054878524
Berikut adalah regex yang saya gunakan.
/^([0-9]{5})+.*? ([A-Z]{1}) +.*? +([A-Z]{1})([0-9]{3})([0-9]{3})([A-Z]{3})([A-Z]{3}) +([A-Z])[0-9]{3}([0-9]{4})([0-9]{2})([0-9]{2})/
Anda dapat membuat satu huruf opsional dengan menambahkan
?
setelahnya sebagai:Kuantifikasi
{1}
berlebihan sehingga Anda dapat menjatuhkannya.sumber
Anda juga harus menandai satu huruf sebagai opsional:
atau menjadikan seluruh bagian opsional
sumber
Anda juga bisa menggunakan regex sederhana yang dirancang untuk kasus Anda seperti di
(.*)\/(([^\?\n\r])*)
mana$2
cocok dengan yang Anda inginkan.sumber