---
title: "Regexp. Hämta ut alla länkar på en sida."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/175798-regexp-hämta-ut-alla-länkar-på-en-sida"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Mattias Nordin"
published: "2008-12-10T15:54:05.000Z"
updated: "2008-12-11T12:52:08.000Z"
replies: 14
views: 695
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/175798-regexp-hämta-ut-alla-länkar-på-en-sida"
---

# Regexp. Hämta ut alla länkar på en sida.

## #1 — Mattias Nordin, 2008-12-10T15:54Z

Hej. Jag håller på att experimentera lite med regexp.

Hur gör man för att plocka ut själva länken ur en \<a href="http://test.asp"\>abc\</a\> tagg?

Följande pattern fungerar för att få ut adressen:

```
regExp.Pattern = "(http://|www)([\S]*)"
```

Hur får jag $1$2 att sparas i en vanlig variabel?
Alltså strTest = $1$2

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

## #2 — voigtann1, 2008-12-10T16:53Z

Använd Matches och SubMatches:

```
Dim myRegExp, myMatches, myMatch
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.MultiLine = True
myRegExp.Pattern = "(http://|www)([\S]*)"
Set myMatches = myRegExp.Execute(String)
For Each myMatch In myMatches
	myMatch.Value 'Save this to a variable
Next
```

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

## #3 — Mattias Nordin, 2008-12-11T09:11Z

Det fungerar bra. Nu behöver jag bara förfina min regexp pattern. Det var inte helt enkelt.

Jag använder följande tester för att testa mig fram: <http://www.regextester.com/>
Men den ger mig inte samma resultat som om jag använder mig av:  <http://www.regular-expressions.info/vbscriptexample.html>

Är det någon som har en online tester att rekommendera för vbscript regexp frågor?

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

## #4 — Nickemannen, 2008-12-11T09:31Z

Regex mönstren brör fungera snarlikt, jag gillar The Regulator 2.0 för att testa regexpatterns.

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

## #5 — Mattias Nordin, 2008-12-11T09:34Z

Har du en länk till mer info?

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

## #6 — Nickemannen, 2008-12-11T09:53Z

<http://weblogs.asp.net/rosherove/archive/2004/05/28/144073.aspx>
Fanns inte så mkt info men en nedladdningslänk :)

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

## #7 — voigtann1, 2008-12-11T11:20Z

webeye regExp tester fungera bra (när den är uppe) jag kör liknande koder: <http://voigt.se/sandbox/regexp/>

RegExpBuddy om du är villig att betala lite för ett underbart verktyg (enligt mig) ;)

Men uttrycken i VB och Javascript är så gott som identiskt. så det bör inte vara några problem.

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

## #8 — Mattias Nordin, 2008-12-11T11:21Z

För att hämta ut allt adresser ur en sida så verkar följande fungera bra:

```
'.Pattern = "(http://[^>]+|https://[^>]+|www[^>]+)"
```

Nu vill jag även hämta ut länk texten. Hur 
Hur gör man en matchning mot allt annat än tex "\</a\>" ?

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

## #9 — voigtann1, 2008-12-11T11:29Z

Det är alla a-element du är ute efter? om jag har förstått det rätt?

Var vill du få ut för data på exempelvis:

```
<a href="http://webforum.nu" title="webForum">Webforum.nu!</a>
```

Ditt mönster just nu känns som lite konstigt då du kommer i exemplet ovan få ut
http://webforum.nu" title="webForum" som matchning. Och om det är så du vill få ut:

```
<a href="[blue][b][url]http://webforum.nu[/url][/b][/blue]" title="webForum">[blue][b]Webforum.nu![/b][/blue]</a>
```

Så är det lite annat än bara "myMatch.Value" då du vill få ut Submatch på träffen.

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

## #10 — Mattias Nordin, 2008-12-11T11:40Z

Det har du rätt i...

Hittade precis följande sida som har en pattern för "link text and url from anchor".
<http://regexlib.com/UserPatterns.aspx?authorid=0bf8159c-d1b8-47c3-bd05-6590c1d16e9b>

```
<a.+?href\=(?<link>.+?)(?=[>\s]).*?>(?<lnkText>.+?)</a>
```

Detta pattern fungerar utmärkt i "The regulator" men den fungerar inte när jag försöker exekvera den på min ASP sida. \<link\> varianten har jag inte sett tidigare. Är det den som inte stödjs i ASP?

```
.Pattern = "<a.+?href\=(?<link>.+?)(?=[>\s]).*?>(?<lnkText>.+?)</a>" 
'.Pattern = "(http://[^>]+|https://[^>]+|www[^>]+)"
```

Ger mig...

> Microsoft VBScript runtime error '800a1399' 
> Syntax error in regular expression 
> /\_inc_get_links.asp, line 46 
> 
> \>\> Set myMatches = RegularExpressionObject.Execute(strHTML)

Vad kan jag göra för fel?

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

## #11 — voigtann1, 2008-12-11T12:00Z

Du kollar på .NET kod eller rättare sagt: du kan inte ha sätta alias på dina matches i ASP. (?\<link\> exempelvis
Plocka bort de

Men den matchar inte på exempelvis: \<a href=" dvs med " och '. så att du märker av det ser det också.

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

## #12 — Mattias Nordin, 2008-12-11T12:16Z

Antog att det var något sådant. :)
Nu ser min kod ut som nedan:

```
		Set RegularExpressionObject = New RegExp
		With RegularExpressionObject
			'DESCRIPTION... 
			.Pattern = "<a.+?href\=(.+?)(?=[>\s]).*?>(.+?)</a>" 
			.IgnoreCase = True
			.Global = True
		End With
	
		Set myMatches = RegularExpressionObject.Execute(strHTML)
		For Each myMatch In myMatches
			'REMOVE ANY " LEFT IN THE STRING...
			varItemCount = varItemCount +1 
			response.write("<li> Match = " &varItemCount &":  " &myMatch.Value &"<p>")  
		Next
```

Jag testar mot följande textstycke:

```
Before text <a href="http://mattias.nordin.net"> L< ink> text1</a>
after text Before text <a href="http://mattias.nordin.net">Link text2</a> after text 
dd <a href="www.mattias.nordin.net" title=" < test title">Link text4</a> ee 
ff <a href="www.mattias.nordin.net">Link text5</a> GG
```

Min output är följande:

> Match = 1: L\< ink\> text1
> Match = 2: Link text2
> Match = 3: Link text4
> Match = 4: Link text5

Det börjar alltså fungera hyffsat bra. Tackar för att du leder denna blinda man ;)
Det jag inte riktigt förstår är hur jag splittar myMatch.Value. Jag vill kunna hämta ut både URL och Länktexten.
Kan det vara så att URL = $1$2 och länktexten är $3 ? 

Hur får jag ut dessa separerat?   :stud

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

## #13 — voigtann1, 2008-12-11T12:21Z

myMatch har ett som heter Submatches(integer)
där du vill ha $1 =\> 0 $2 =\> 2:

```
url = myMatch.SubMatches(0) & myMatch.SubMatches(1)
text =  myMatch.Submatches(2)
```

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

## #14 — Mattias Nordin, 2008-12-11T12:42Z

Du får härmed 28 virtuella credits av mig för hjälpen. Nu fungerar det till 99% som jag vill.

Det enda som jag inte har löst med mönstret nedan

.Pattern = "\<a.+?href\\=(.+?)(?=\[\>\\s\]).\*?\>(.+?)\</a\>" 

är en länk med en html vinkel i länknamnet enligt...

\<a href="http://mattias.nordin.net"\>test1\<test2\</a\>

Men det kanske kan anses vara detaljer.

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

## #15 — voigtann1, 2008-12-11T12:52Z

\</a\> =\> \<\\/a\>
Men $1 kan vara "http://mattias.nordin.net" när du egentligen vill ha <http://mattias.nordin.net>

mönstret lite snabb test kanske skulle vara:

```
<a.+?href\=['"]?(.+?)(?=[>\s'"])['"]?.*?>(.+?)<\/a>
```

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/175798-regexp-hämta-ut-alla-länkar-på-en-sida
