24. februar 2004 - 15:44Der er
6 kommentarer og 1 løsning
Endnu et spørgsmål fra n00b'en
Nu skal jeg så ha' Reg exp til at finde følgende tekst strenge..:
"bigint(20) NOT NULL auto_increment" "int() NOT NULL auto_increment" "int auto_increment"
Altså skal jeg nu definere et reg exp. som overholder disse regler:
1. skal starte med ordet "int", som kan have "big" til at preceede sig 2. derefter et eller flere blanktegn (er jo nok "\s*", ikke?) 3. så muligvis tekststrengen "NOT NULL" (kan måske være "(NOT NULL)*", ikke?... 4. derefter et eller flere blanktegn 5. slutteligt tekststrengen "auto_increment"
Går ud fra, at du alligevel skal bruge case Insensitive ...
Gruppen big kan forekomme int skal være der Umiddelbart derefter kan der være en gruppe med tal inde i paranteser 0 eller flere mellemrum før en eventuel forekomst af not null et mellemrum og så teksten auto_increment
Synes godt om
Slettet bruger
24. februar 2004 - 16:11#3
ok, jeg har et par spørgsmål:
er "\w" ikke whitespace-karakteren? er det nok med " *", for så kan jeg ikke fatte brugen af "\w"-karakteren?
"?" går vel bare søgning case-insensitive?
Lige meget hvad, så skal du ha' dine point, det fungerer jo, lig venlist et svar....
\w betyder alle bogstaver, tal eller _ (underscore) -- altså word-karakterer ... -- sikkert i modsætning til \s som er whiteSpace-karakterer (mellemrum, tab, nylinje m.m.)
? betyder 0 eller een gang !-)
-- og velbekomme '-)
Synes godt om
Slettet bruger
24. februar 2004 - 16:33#5
ok..... tak for oplysningerne, men hovsa.... der er jo noget som ikke fungerer, denne linie:
"CREATE TABLE staevne_klubber ( id bigint(20) NOT NULL auto_increment, navn VARCHAR NOT NULL, PRIMARY KEY (id));"
Når jeg kører din reg. exp på den, så kan den ikke identificere bigint(20) NOT NULL auto_increment, i hvert fald ikke i min Java-kode (sig endelig til hvis jeg skal flytte spørgsmålet), jeg synes det bliver forvirrende når man skal bruge escape-characters foran (Java) sine escape-characters (Reg. exp):
Tjek f.eks lige det her ud...:
String toSearch = "CREATE TABLE staevne_klubber ( id bigint(20) NOT NULL auto_increment, navn VARCHAR NOT NULL, PRIMARY KEY (id));"; String regExp = "(big)?int(\\(\\d*\\))? *(not null)? auto_increment"; String replaceWith = "IDENTITY";
System.out.println("String before Reg Exp: "+toSearch); toSearch = toSearch.replaceAll(regExp, replaceWith); System.out.println("String after Reg Exp: "+toSearch);
Under alle omstændigheder skal du nok få dine point, det virker jo (for det meste, blot ikke lige i dette tilfælde :-|)
Synes godt om
Slettet bruger
24. februar 2004 - 16:34#6
linien skulle gerne komme til at se således ud:
"CREATE TABLE staevne_klubber ( id IDENTITY <og så videre, og så videre>"
-- og der er nogle små afvigelser i implementeringerne af RegExps på tværs af sprogene, så det kan være at nogle tegn er specielle, hvilket jeg dog ikke tror her !-)
-- og tak for points ;~}
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.