---
title: "Bugg i regExpo-objektet??"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/68589-bugg-i-regexpo-objektet"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "mattiasjarnhall"
published: "2003-02-18T03:41:43.000Z"
updated: "2003-02-19T14:41:07.000Z"
replies: 10
views: 478
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/68589-bugg-i-regexpo-objektet"
---

# Bugg i regExpo-objektet??

## #1 — mattiasjarnhall, 2003-02-18T03:41Z

Hej alla!

Skrev tidigare om ett problem som sänkte min server (<http://www.webforum.nu/showthread.php?s=&postid=560608#post560608>) Nu är det så att jag lyckats "lokalisera" felet.. och det är mycket skumt.. mycket mycket skumt (tycker jag i alla fall!)

Om ni testar denna kod:

\<%
' En länk som man skrivit felaktigt (Glömt ena hakparantesen i )
strText = "Lite text innan länken  Text efter länken!Text efter länken!  Text efter länken!Text efter länken! Text efter länken!Text efter länken! "

Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true

objRegExp.Pattern = "\\((.\|\\s)\*?)\\\[\\/url\\\]"
strText = objRegExp.Replace(strText,"\<A HREF=""$1"" TARGET=""\_blank""\>$2\</A\>")

Response.Write(strText)
%\>

Så kommer det nog att funka, MEN det kommer ta tid.. och processorn kommer jobba på 100%..

Lägger man till ytterligare några "Text efter länken!" i slutet av strängen strText så kommer hela servern att hänga sig!

Byter jag mönster från: "\\((.\|\\s)\*?)\\\[\\/url\\\]"
Till: "\\((.\|\\s)?)\\\[\\/url\\\]", så kommer det inte att vara några problem!

Nu till frågan! VARFÖR??? Varför blir det såhär? Är detta en bugg i RegExpo-objektet? Eller är det något annat som orsakar detta strul?

Själv tycker jag att objektet inte borde hitta en matchning på sin sökning och helt enkelt ge upp.. men istället så står den bara och "tuggar"

Snälla.. hjälp mig få en förklaring på detta! :)

Tack på förhand

/MJ

Permalänk: https://www.webforum.nu/p/68589

## #2 — Engine^, 2003-02-18T08:24Z

((.\|\\s)\*?)

? : Matches the preceding character or subexpression zero or one time, or indicates a non-greedy quantifier.
\* : Matches the preceding character or subexpression zero or more times.

Nu är jag långt ifrån en hejjare på regexp, men jag tycker kombinationen \*? blir väldigt underlig. Själv skulle jag vilja ha ((.\|\\s)\*), men det lär väl inte fungera. Det kan väl kanske vara så att \*? kombinationen efter vissa former av subexpressions inte kan hanteras utan skapar skumma looper i tolken, vilket verkar vara fallet med ((.\|\\s)\*?).

Jag testade ditt uttryck med Vides [Regexptester](http://www.webeye.nu/default2.asp?que=asp/regexptester.asp) och då gick det nästan bra... tog en jäkla tid båda varianterna. F'låt Vide om din server fick tugga regexp ett tag :e

Permalänk: https://www.webforum.nu/p/953235

## #3 — Vide, 2003-02-18T09:11Z

Lugnt :e

Permalänk: https://www.webforum.nu/p/953264

## #4 — mattiasjarnhall, 2003-02-18T20:37Z

Visst går det segt.. testa att köra:

\<% 
' En länk som man skrivit felaktigt (Glömt ena hakparantesen i ) 
strText = "Lite text innan länken  Text efter länken!Text efter länken! Text efter länken!Text efter länken! Text efter länken!Text efter länken! Text efter länken!Text efter länken! Text efter länken!Text efter länken! Text efter länken!Text efter länken! " 

Set objRegExp = New regexp 
objRegExp.Global = true 
objRegExp.IgnoreCase = true 

objRegExp.Pattern = "\\((.\|\\s)\*?)\\\[\\/url\\\]" 
strText = objRegExp.Replace(strText,"\<A HREF=""$1"" TARGET=""\_blank""\>$2\</A\>") 

Response.Write(strText) 
%\>

Så skall du se att allt hänger sig!

Ingen som kan komma med en bra förklaring på varför detta händer? Jag tycker det är en "livsfarlig" bugg.. alla som använder liknande mönster kan alltså få sina webbservrar sänkta bara för att man glömmer en hakparantes?!?!

/MJ

Permalänk: https://www.webforum.nu/p/953778

## #5 — niko, 2003-02-18T23:35Z

> Så skall du se att allt hänger sig!

Ja. Du hade onekligen rätt. Dllhost.exe skenar och lägger sig på 100% CPU.

Tyvärr är jag inte tillräckligt insatt i regexp för att kunna säga att det är en bugg, men när jag testar i VB så märkte jag att problemet uppstår när det finns för många *blanktecken* sammanlagt efter den sista hakparentesen (ca 25 st). Alla övriga tecken verkar gå bra. Kanske det är nån som får nån idé av detta?

På en skarp server är det så klart som du säger "livsfarligt". Antingen så får du försöka hitta ett annat pattern, eller så får du se till att exlicit kolla efter för många blankslag innan du skickar in det till Regexp.

Permalänk: https://www.webforum.nu/p/956811

## #6 — C2 Rockar, 2003-02-19T10:38Z

Man ska vara väldigt noggrann när man skriver reguljära uttryck, det är mycket lätt att skapa uttryck som hamnar i väldigt djupa rekursioner och det är ? och \* man ska vara försiktig med.

Permalänk: https://www.webforum.nu/p/957000

## #7 — Sebbe, 2003-02-19T13:55Z

Jag vet inte så mycket om RegExp, men för mig verkar iaf det här patternet funka: "\\(.\*\|\\s\*)\\\[\\/url\\\]"
Men det kanske inte blir riktigt rätt med det som du ska göra?

Permalänk: https://www.webforum.nu/p/957139

## #8 — Engine^, 2003-02-19T14:36Z

Det verkar fungera alldeles utmärkt. Samt att den arbetade betydligt snabbare än \*?-kombinationen.

Jag testade med:
"Här finns det en url-tagg: [wF](http://www.webforum.nu). Gå dit och lär dig en massa stuff ;) Kom igen kom igen kom igen!"

wF greppar min tagg... ;) \|url=htp:/ww.webforum.nu\|wF\|/url\|

Permalänk: https://www.webforum.nu/p/957165

## #9 — Sebbe, 2003-02-19T14:39Z

Engine^: Vad var det som fungerade alldeles utmärkt? :l

Permalänk: https://www.webforum.nu/p/957173

## #10 — Engine^, 2003-02-19T14:40Z

Det pattern som du gav :)

Permalänk: https://www.webforum.nu/p/957175

## #11 — Sebbe, 2003-02-19T14:41Z

Jasså du? :e Bra nyheter för mig då alltså! :)

Permalänk: https://www.webforum.nu/p/957177

---

Tråden på webben: https://www.webforum.nu/amne/asp/68589-bugg-i-regexpo-objektet
