2201B: invalid_regular_expression
PostgreSQLNe demek?
Bir düzenli ifade (regular expression) işlemi (~, ~*, SIMILAR TO, regexp_matches, substring vb.) sırasında verilen desen geçersiz. PostgreSQL deseni derleyemedi çünkü sözdizimi hatalı.
Neden olur?
Dengesiz parantezler, geçersiz karakter sınıfları, hatalı kaçış (escape) dizileri ya da desteklenmeyen bir yapı içeren bir regex deseni. Sık görülen bir neden, kullanıcı girdisinin doğrudan desen olarak kullanılması ve girdideki özel karakterlerin kaçırılmamasıdır.
Nasıl çözülür?
Regex desenini POSIX/ARE sözdizimine göre düzeltin; parantez, köşeli parantez ve kaçış dizilerini denetleyin. Kullanıcı girdisini desen olarak değil düz metin olarak arayacaksanız: PostgreSQL'de yerleşik bir regexp_quote fonksiyonu yoktur; özel karakterleri regexp_replace ile önlerine ters bölü ekleyerek kaçırın ya da regex kullanmadan strpos()/position() veya LIKE ... ESCAPE ile arayın. Deseni ayrı bir araçta test ederek doğrulayın.