Regex 08 - Opsiyonel Belirteci

Regex 08 - Opsiyonel Belirteci

Regex 07 - Veya Özel Karakteri
Veya, örüntüde birden fazla seçeneği barındırmak için kullanılır. Regex örüntüleri içerisinde alternasyon işlevini yürütür.

Önceki Bölüm


Regex'inizin içerisinde opsiyonel olarak olsa da olur olmasa da olur dediğiniz kısımları belirtmenizi sağlayan yeni bir özel karakter öğreneceğiz: Soru işareti ?.

Diyelim ki bir metnin içerisinde belirli bir ürünün fiyatını aramak istiyorsunuz.

Ancak bu fiyatın bu metnin içerisinde 25₺ ve 25,00₺ olarak iki farklı şekilde yazılabileceğini düşünüyorsunuz. O halde ? işaretini kullanarak tek bir regex örüntüsüyle bu aramayı gerçekleştirebilirsiniz.

25,?0?0?₺

Soru işareti, solunda yer alan karakteri opsiyonel hâle getiriyor. O yüzden opsiyonel olarak gördüğümüz karakterlerin sağına ? işaretini koyarak iki durumu da yakalayabiliyoruz.

Soru işareti sadece solundaki karakteri değil, aynı zamanda alt örüntüyü (sub-expression) de opsiyonel hâle getirebilir. Yani yukarıdaki örüntüyü parantez kullanarak daha basit bir şekilde yazabiliriz.

25(,00)?₺

Bu defa soru işaretinin parantez içerisinde yer alan ,00 karakterini komple opsiyonel hâle getirdiğini görebilirsiniz.

Yani soru işaretini kullanarak solundaki karakter ya da alt örüntü metinde yer alsa da almasa da sonucun pozitif olacağından emin olmuş oluyoruz.

Tabii soru işaretinin solundaki kısmın her zaman pozitif dönmesi, kesinlikle bir match bulacağımız anlamına gelmiyor. Aşağıdaki örneklere bakalım:

28,00₺
25,00€

Her ne kadar soru işareti ile opsiyonel kılınmış kısım pozitif dönmüş olsa da 28,00₺ ve 25,00 kısımları bu regexin pozitif dönememesine sebep olmuş oldu.