Hjälp med regular expressions

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1
  • Oregistrerad
  • 2003-09-05 09:48

Är det någon som är kung på regular expressions här? Jag vill göra en sökning som matchar alla instanser av CreateObject("[VAD SOM HELST utom ADODB.RecordSet]")

För att få ut CreateObject("[VAD SOM HELST]") skriver jag:

(C|c)reate(O|o)bject\(\"[^\"]*\"\)

men jag skulle vilja att innehållet ([^\"]*) skulle vara som ovan fast med tillägget: OCH INTE "ADODB.RecordSet".

Nån som kan detta bättre eller har ett bra förslag?

Här finns en rätt bra genomgång om hur man skriver bra regexps' , här alltså…

Lustigt, jag satt och slet mitt hår med regex igår faktiskt. Jag ville också göra en exkluderande sökning. Dvs hitta allting utom en specifik sträng.

Vad jag kämpade med var att jag tillfälligt skulle ta ner en hel sajt och ersätta den med en ny. För att göra övergången så snygg som möjligt ville jag låta besökarna mötas av en tillfällig sida som berättade om att uppdatering pågång, oavsett vilken sida dom försökte nå.

För att göra det så använde jag RedirectMatch i .htaccess-filen. RedirectMatch använder sig av regex och det var här mitt problem uppstod. För att styra om alla sidor går det att skriva såhär:

RedirectMatch /.* http://www.exempel.com/byte.html

Problemet är att jag skapar en oändlig loop då eftersom även byte.html som jag försöker visa också innefattas av regex-matchningen. Inte så lämpligt.

Så jag ville göra en matchning på alla sökvägar och filer utom just byte.html. Tyvärr visade det sig inte vara så lätt (för mig). Jag läste på en del om regex och hittade negative lookahead, men det fungerade inte med RedirectMatch. Så till slut gjorde jag en ful-lösning:

RedirectMatch /[^b].*$ http://www.exempel.com/byte.html

Det fungerade, men bara tack vare att ingen annan fil i roten började på bokstaven b...

(Jag hoppades att t.ex. [^b][^y][^t][^e] kanske skulle fungera men det gjorde det inte.)

  • Oregistrerad
  • 2003-09-05 12:01
Citat:

Skrevs ursprungligen av magnus.n
Här finns en rätt bra genomgång om hur man skriver bra regexps' , här alltså…

Jag stötte på den sidan tidigare i mitt letande efter en lösning, men fann den inte där. Tack ändå...

  • Oregistrerad
  • 2003-09-05 12:07
Citat:

Skrevs ursprungligen av Adrian B
Jag hoppades att t.ex. [^b][^y][^t][^e] kanske skulle fungera men det gjorde det inte.

Jag funderade på något liknande, men då hanteras ju tecken för tecken istället för en sträng av tecken. Inga filer som har första bokstaven "b" ELLER andra "y" ELLER tredje "t" ELLER fjärde "e" kommer med i resultatet vilket är felaktigt.

Jag letar vidare...

I stället för att försöka lösa det hela med ett enda regular expressions kan du väl dela upp det i två delar:
först kolla om du hittar CreateObject("Vadsomhelst") med ett regular expression och sedan kolla att det inte är CreateObject(ADODB.RecordSet) med en vanlig sträng jämförelse.

Joakim

  • Medlem
  • Tyresö
  • 2003-09-05 21:47

Kanske lite OT, men jag kan inte låta bli:

Jamie Zawinski ( jwz.org) wisely said,

Citat:

Some programmers when faced with a problem think, "I know, I'll use a regular expression." Now they have two problems.

1
Bevaka tråden