Espressione regolare per una stringa che non inizia con una sequenza


197

Sto elaborando un sacco di tabelle usando questo programma , ma devo ignorare quelle che iniziano con l'etichetta "tbd_". Finora ho qualcosa come [^ tbd_] ma che semplicemente non corrisponde a quei personaggi.


Come funziona SchemaSpy? Stai passando un elenco di nomi di tabella o stai passando una regex e sta facendo la corrispondenza?
Mark Biek,

Sto passando una regex (è la bandiera -i) e importerà le partite, o
almeno

4
@echoblaze: se stai elaborando XML, perché non usi un parser XML? Sarebbe molto più facile che usare le espressioni regolari.
Gumbo,

Risposte:


335

È possibile utilizzare un'asserzione di previsione negativa:

^(?!tbd_).+

O un'affermazione negativa dietro le spalle:

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

O solo semplici vecchi set di caratteri e alternanze:

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

6
È limitato a particolari motori regex?
Mark Biek,

1
Lo chiedo solo perché il secondo sembra ancora corrispondere a tbd_ nel mio test. Il primo è fantastico però.
Mark Biek,

5
Dai un'occhiata al confronto dei gusti di regular-expressions.info
Gumbo,

1
@Gumbo - questo non dovrebbe finire. * Invece di. +? Una stringa che è tbd_ inizia anche con quella ... quindi per definizione non deve essere seguita da nessun altro carattere? Altrimenti, buon esempio. Richiede tuttavia un motore regex che supporti la ricerca.
BenAlabaster,

1
@balabaster: non penso che stia cercando stringhe vuote. Ma se è così, si può facilmente cambiare la situazione sostituendo il .+by.*
Gumbo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.