2009-05-22 14 views
128

Przetwarzam kilka tabel przy użyciu this program, ale muszę zignorować te, które zaczynają się od etykiety "tbd_". Do tej pory mam coś takiego jak [^ tbd_], ale to po prostu nie pasuje do tych postaci.Wyrażenie regularne dla ciągu, który nie zaczyna się od sekwencji

+0

Jak działa SchemaSpy? Czy przekazujesz mu listę nazw tabel, czy też przekazujesz go jako wyrażenie regularne i robi dopasowanie? –

+0

Przekazuję wyrażenie regularne (jest to flaga -i) i zaimportuje dopasowania, lub tak będzie napisane w każdym przypadku =) – echoblaze

+3

@echoblaze: Jeśli przetwarzasz XML, dlaczego nie używasz XML parser? Byłoby to znacznie łatwiejsze niż używanie wyrażeń regularnych. – Gumbo

Odpowiedz

240

Można użyć negatywny antycypowanego twierdzenie:

^(?!tbd_).+ 

lub negatywny look-za twierdzenie:

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

lub po prostu stare zestawy znaków i alternacje:

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

Czy jest to ograniczone do konkretnych silników regex? –

+1

Pytam tylko dlatego, że ten drugi wciąż wydaje się pasować do tbd_ w moim teście. Pierwszy jest jednak świetny. –

+3

Zobacz porównanie smaku regular-expressions.info: http://www.regular-expressions.info/refflavors.html – Gumbo

Powiązane problemy