Bir diziyle başlamayan bir dize için normal ifade


197

Bu programı kullanarak tablolar bir demet işliyorum, ama etiket "tbd_" ile başlayan olanları göz ardı gerekir. Şimdiye kadar [^ tbd_] gibi bir şeyim var ama bu karakterlerle eşleşmiyor.


SchemaSpy nasıl çalışır? Tablo adlarının bir listesini mi veriyorsunuz ya da bir normal ifadeyi mi veriyorsunuz ve bu eşleşmeyi yapıyor mu?
Mark Biek

Bir normal
ifadeyi

4
@echoblaze: XML işliyorsanız, neden bir XML ayrıştırıcı kullanmıyorsunuz? Bu, normal ifadeler kullanmaktan çok daha kolay olurdu.
Gumbo

Yanıtlar:


335

Olumsuz bir ileriye dönük iddia kullanabilirsiniz:

^(?!tbd_).+

Veya olumsuz bir arkaplan iddiası:

(^.{1,3}$|^.{4}(?<!tbd_).*)

Veya sadece düz eski karakter kümeleri ve alternatifleri:

^([^t]|t($|[^b]|b($|[^d]|d($|[^_])))).*

6
Bu herhangi bir normal regex motorla sınırlı mı?
Mark Biek

1
Ben sadece soruyorum çünkü ikinci olan hala testimde tbd_ ile eşleşiyor gibi görünüyor. İlki harika.
Mark Biek

5
Normal ifadelere bir göz atın. İnfo'nun lezzet karşılaştırması: regular-expressions.info/refflavors.html
Gumbo

1
@ Gumbo - bu bitmemeli. * Yerine. *? Tbd_ olan bir dize de bununla başlar ... bu nedenle tanım gereği başka karakterler izlemenize gerek yoktur? Aksi takdirde, iyi bir örnek. Gerçi , arayı destekleyen bir regex motoru gerektiriyor.
BenAlabaster

1
@balabaster: Boş teller aradığını sanmıyorum. Ama eğer öyleyse, o kolayca değiştirerek bunu değiştirebilirsiniz .+tarafından.*
bamya
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.