Saya punya daftar string. Beberapa dari mereka memiliki bentuk 123-...456
. Bagian variabel "..." mungkin:
- string "apel" diikuti dengan tanda hubung, misalnya
123-apple-456
- string "pisang" diikuti oleh tanda hubung, misalnya
123-banana-456
- string kosong, misalnya
123-456
(perhatikan hanya ada satu tanda hubung)
Kata apa pun selain "apel" atau "pisang" tidak valid.
Untuk tiga kasus ini, saya ingin mencocokkan masing-masing "apel", "pisang", dan "". Perhatikan bahwa saya tidak pernah ingin menangkap tanda hubung, tetapi saya selalu ingin mencocokkannya . Jika string bukan dari bentuk 123-...456
seperti dijelaskan di atas, maka tidak ada kecocokan sama sekali.
Bagaimana cara menulis ekspresi reguler untuk melakukan ini? Anggaplah saya memiliki citarasa yang memungkinkan kelompok yang melihat ke depan, melihat ke belakang, mencari di sekitar, dan tidak menangkap.
Pengamatan utama di sini adalah bahwa ketika Anda memiliki "apel" atau "pisang", Anda juga harus memiliki tanda hubung tambahan, tetapi Anda tidak ingin mencocokkannya. Dan saat Anda mencocokkan string kosong, Anda tidak harus memiliki tanda hubung tambahan. Regex yang merangkum pernyataan ini akan menjadi yang benar, saya pikir.