---
title: "RegExp tar ut varandra"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/11384-regexp-tar-ut-varandra"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Vide"
published: "2001-08-29T08:59:00.000Z"
updated: "2001-08-30T08:55:00.000Z"
replies: 24
views: 382
page: 1
pages: 2
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/11384-regexp-tar-ut-varandra"
---

# RegExp tar ut varandra

_Sida 1 av 2._

## #1 — Vide, 2001-08-29T08:59Z

Hejsan!

Håller på att tappa skägget (rakade iofs av det imorrse, men det är ju ett talesätt), har försökt få ihop två regexp-replacar, båda fungerar bra nä man använder dom var för sig, men när man använder dom tillsammans så blir det fel.

```
		objRxp.Pattern = (http://)(\S)(\S+)"
		strInString = objRxp.Replace(strInString, " <a title=""Länk till $2$3 (öppnas i nytt fönster)"" target=""" & strTarget & """ href=""$1$2" & strDelimiter & "$3"">$2" & strDelimiter & "$3</a>")
		objRxp.Pattern = "\[url=([^<][\S]+[^\]])\](.*?)\[\/url\]"
		strInString = objRxp.Replace(strInString,"<a title=""Länk till $2 (öppnas i nytt fönster)"" href=""$1"" target="""&strTarget&""">$2</a>")
```

Problemet ligger självkalart i att den första ändrar de url:er som ligger i  och på så sätt blir allt fel... jag tycker mig ha testat alla möjliga varianter för att få bukt på problemet, men utan resultat (förutom lite udda lösningar som jag inte vill använda).

Så om någon kan se hur detta skall lösas så är jag evigt tacksam... :)

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

## #2 — Janspeed, 2001-08-29T10:30Z

Jag har inte koll på så mycket RegExp men jag undrar vad det är du försöker göra? :)

/JANspeed

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

## #3 — Janspeed, 2001-08-29T10:46Z

Som sagt kan jag inte så mycket om RegExp men måste du använda bägge satserna? :)

```
If InStr(strInString, "[url=") Then

objRxp.Pattern = "\[url=([^<][\S]+[^\]])\](.*?)\[\/url\]"
strInString = objRxp.Replace(strInString,"<a title=""Länk till $2 (öppnas i nytt fönster)"" href=""$1"" target="""&strTarget&""">$2</a>")

Else

objRxp.Pattern = (http://)(\S)(\S+)"
strInString = objRxp.Replace(strInString, " <a title=""Länk till $2$3 (öppnas i nytt fönster)"" target=""" & strTarget & """ href=""$1$2" & strDelimiter & "$3"">$2" & strDelimiter & "$3</a>")

End If
```

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

## #4 — Vide, 2001-08-29T11:17Z

Vad jag vill göra är att detta scenario:

Användaren postar ett inlägg, han har dels en vanlig länk typ: <http://www.webeye.nu>  (den skall ju självklart länkas)

Och dels har han skrivit in &#91;url=http://www.webeye.nu\]webeye.nu och denna skall ju också länkas enligt scriptet.

Det är alltså när jag använder båda två som problemet uppstår.

Med "If InStr(strInString, "Vide rox = new Vide();
rox.learn("C#");
[webeye.nu](http://www.webeye.nu)

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

## #5 — Pace, 2001-08-29T13:17Z

Jag vet hur det känns: ;)
 <http://cgi.webforum.nu/wf/Forum11/HTML/005624.html> 

Behöver också hjälp med detta! Pronto!!

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

## #6 — Janspeed, 2001-08-29T13:43Z

Du kan inte skilja dem åt genom ett mellanslag i RegExp mönstret då? 

Dvs. att den på  <http://www.adress.nu>  söker efter http:// i början och mellanslag i slutet och på \\adress"\]http://www.adress.nu\]adress  så söker den efter http:// i början och \] i slutet?

Hoppas att alla mina tecken kommmer med som de ska nu. :)

/JANspeed

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

## #7 — spango, 2001-08-29T13:54Z

Eftersom jag redan är i farten, så...
\\\+)"\>.\*?\</a\>\\\](.\*?)\\\[/url\\\]
Med det här mönstret borde url:en hamna i $1 och beskrivningen i $2. Inte den vackraste lösningen, kanske, men den borde funka.

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

## #8 — Vide, 2001-08-29T13:59Z

Hehe, ännu en ful lösning till arkivet... den där kan faktiskt fungera, även om det är en nödlösning ;)

Egentligen vill jag att detta skall fungera, men det gör det inte:

```
"\[url=([b][^<][/b][\S]+[^\]])\](.*?)\[\/url\]"
```

Den skall alltså bara träffa när den inte hittar ett "\<" efter "="...

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

## #9 — Bengan, 2001-08-29T14:25Z

Kul, jag satt och brottades med samma sak förra veckan (till mitt nyhetssystem till <http://www.bengan.com/it/>  ).
Så länge struntade jag i vanliga http:// länkar och använder pattern:

```
	objRxp.Pattern = "\[url=(.+?)\](.+?)\[/url\]"
	strInString = objRxp.Replace(strInString, "<a target=""" & strTarget & """ href=""$1""><B>$2</B></a>")

	objRxp.Pattern = "\[bild=(.+?)\]"
	strInString = objRxp.Replace(strInString, "<img border=""0"" src=""$1"" alt=""Bild!"" vspace=""2"" hspace=""5"">")

	objRxp.Pattern = "\[citat\]"
	strInString = objRxp.Replace(strInString, "<p><FONT COLOR=""#800000""><i>&quot;")

	objRxp.Pattern = "\[/citat\]"
	strInString = objRxp.Replace(strInString, "&quot;</i></FONT></p>")
```

Detta hjälper dock inte Vide såklart :e

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

## #10 — Pace, 2001-08-29T14:28Z

Hmmm... det är ju URL-översättaren som förstör allting, så man skulle ju kunna göra så att den kollar ifall det finns något \[ och \] eller \[kodd\] och \[/kood\] mellan URL:en - i så fall skiter den i att bearbeta den.

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

## #11 — Janspeed, 2001-08-29T14:34Z

Typ så här knåpade jag ihop. Den funkar för mig. :)

```

'Transform [url="http://s"]http://s[/url] 
objRegExp.Pattern = "\s{1,}http://(.*?)[\.,]{0,}[\s{1,}]"
strText = objRegExp.Replace(strText," <a href=""http://$1"">http://$1</a> ")

'Transform [URL]s
objRegExp.Pattern = "\[url=(.*?)\](.*?)\[\/url\]"
strText = objRegExp.Replace(strText,"<a href=""$1"">$2</a>")
```

/JANspeed

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

## #12 — Vide, 2001-08-29T14:35Z

Jo, så har jag löst det nu (nästan), problemet ligger ju i att man skall kunna ha en länk som börja i början av en rad...

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

## #13 — spango, 2001-08-29T14:48Z

Öh, \\s matchar ny rad också. Dock inte början på strängen...

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

## #14 — Bengan, 2001-08-29T14:57Z

Hmm, vad blir den praktiska skillnaden mellan '(.+?)' i min kod och '(.\*?)'?

Träffar (.\*?) även om det inte finns några tecken alls, typ?

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

## #15 — Janspeed, 2001-08-29T15:05Z

ger en url, fast när jag testar med (.+?) så blir det krupp i min funktion i alla fall. Vet dock inte varför.

/JANspeed

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

## #16 — Janspeed, 2001-08-29T15:10Z

> Jo, så har jag löst det nu (nästan), problemet ligger ju i att man skall kunna ha en länk som börja i början av en rad...

> Öh, \\s matchar ny rad också. Dock inte början på strängen...

Om man klämmer in en vbcrlf innan texten så funkar det utmärkt. Dock så får man ju tänka på detta innan man konverterar alla vbcrlf till \<br\>. :)

/JANspeed

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

## #17 — Janspeed, 2001-08-29T15:13Z

För att kunna lösa det på något annat sätt så får man nog hitta ett tecken som motsvarar allra första början? :)

/JANspeed

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

## #18 — Bengan, 2001-08-29T15:58Z

Kanske lägga in en Chr(0) i början av strängen innan man kör regexpo och sen lägga till den i mönstret?

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

## #19 — Vide, 2001-08-29T16:16Z

Janspeed, testade ditt pattern och det blev som jag sa, börjar länken på en ny rad så länkas den inte, trycker ajg däremot in ett space framför så länkas den...

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

## #20 — spango, 2001-08-29T19:22Z

Prova (^&#0124;\\s) och kom ihåg att stoppa tillbaks även det mönstret vid ersättning (så att url:en blir $2). Funkar i JavaScript iaf.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/11384-regexp-tar-ut-varandra  
Nästa sida: https://www.webforum.nu/amne/asp/11384-regexp-tar-ut-varandra/page2.md
