webForumDet fria alternativet
Logga in / Bli medlem

Bugg i RegExp (?)

ASP

3 svar · 215 visningar · startad av toha

Medlem sedan dec. 1999707 inlägg
Trådstart#1

Skulle svara på "Hammers" inlägg om Replace och gjorde en funktion som använder sig av RegExp-objektet. Jag tror jag hittade en bugg i det.

Om jag har strängen:

Leffa (Fredag, Tisdag) Arne Svante (Onsdag)

och vill ta bort allt inom parateserna så skall mitt reguljära uttryck se ut som följer:

\(.*\)

Vilket matchar allt inom paranteser, inklusive parateserna. Men det uttrycket är greedy vilket betyder att om man tar bort allt som den matchar så får man kvar:

Leffa

För att göra det till ett s.k. non-greedy så skall uttrycket se ut så här:

\(.*?\)

Allt enligt MSDN Library:

By placing the '?' after a '*', '+', or '?' quantifier, the expression is transformed from a greedy to a non-greedy, or minimal, match.

Källa: MSDN Library, Oct 2000.

Vilket resulterar i följande felmeddelande:

Microsoft VBScript runtime (0x800A139A)
Unexpected quantifier

Lite putt blir man ju...

Medlem sedan dec. 19996 721 inlägg
#2

Uppgradera till senaste versionen av VBScript, så ska det nog funka.

Annars kan du gå runt genom

\([^\)]*\)

som matchar på allt utom ) tills att den helt enkelt är tvungen att matcha.

[Redigerat av emission den 06 feb 2001]

Medlem sedan dec. 1999707 inlägg
#3

Det uttrycket var ju smart. Jag tackar och bugar. :)

Medlem sedan dec. 19996 721 inlägg
#4

Du är välkommen! :)

255 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)