---
title: "plocka ut två saker ur en sträng"
type: "forum-thread"
url: "https://www.webforum.nu/amne/webbutveckling/135167-plocka-ut-två-saker-ur-en-sträng"
topic: "Webbutveckling"
topic_url: "https://www.webforum.nu/amne/webbutveckling"
author: "Calevan"
published: "2005-10-03T11:59:59.000Z"
updated: "2005-10-06T15:57:13.000Z"
replies: 11
views: 503
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/webbutveckling/135167-plocka-ut-två-saker-ur-en-sträng"
---

# plocka ut två saker ur en sträng

## #1 — Calevan, 2005-10-03T11:59Z

Hej!

Har med hjälp av Request.Servervariables("HTTP_REFERER") i asp en av följande texter i en variabel

```
http:// www .google. se /search?hl=sv&q=Fredriks+fotosida&btnG=Google-s%C3%B6kning&meta=

http:// search.msn. se/results.aspx?FORM=MSNH&CP=1252&q=Fredriks+fotosida

http:// www .altavista. com/web/results?itag=ody&q=Fredriks+fotosida&kgs=1&kls=0
```

Nu vill jag dels plocka ut adressen och dels sökordet (det efter q=). Antar att man kan göra en regexp som matchar från "http://" tills nästa "/" och en som går från "q=" till "&". Tänker jag rätt, eller någon annan som har bra förslag? 

Jag skulle behöva hjälp med att skriva detta, och gärna någon fin referens (helst på svenska) var man kan läsa mer om sånt här så jag kan lära mig det!

tack!

/red: la in lite mellanslag i länkarna så att de skulle bli text och inte länkar...

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

## #2 — Peter S, 2005-10-03T13:06Z

Hejsan!

Här är ett exempel:

```
dim arr
arr = array("http://www.google.se/search?hl=sv&q=Fredriks+fotosida&btnG=Google-s%C3%B6kning&meta=","http://search.msn.se/results.aspx?FORM=MSNH&CP=1252&q=Fredriks+fotosida","http://www.altavista.com/web/results?itag=ody&q=Fredriks+fotosida&kgs=1&kls=0")
dim re
set re = new regexp
re.pattern = "(https?://[^/]+)[^\?]+\?(?:[^q]|[^=]{2,}=[^&]*&)*q=([^&]+)"
re.ignorecase = true

for i = 0 to ubound(arr)
  set r = re.execute(arr(i))
  for each item in r
    for each item2 in item.submatches
      response.write item2 & "<br>"
    next
  next
next

set re = nothing
```

Någon bra referens på svenska vet jag tyvärr inte.  :)

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

## #3 — Calevan, 2005-10-03T15:06Z

Tack!

Verkar fungera bra, även om jag inte riktigt förstår hur. Har dock några frågor:

1\. Får svaret "http://www.google.se" och skulle gärna vilja ha ett avslutande "/" tecken efter .se så det ser snyggt ut. förstår tyvärr inte var jag ska skriva in det.

2\. om man söker med fnuttar runt sitt sökord så blir resultatet såhär: 

```
%22Fredriks+fotosida%22

söksträngen: search?hl=sv&q=%22Fredriks+fotosida%22&btnG=Google-s%C3%B6kning&meta=
```

hur gör man så att det bara står Fredriks fotosida, utan fnuttar och utan plustecken?

tack!

(hittade lite info på webeye.nu, men tyvärr blev jag inte mycket klokare av det)

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

## #4 — Peter S, 2005-10-03T15:52Z

Du får ursäkta koden  :r 

```
dim arr
arr = array("http://www.google.se/search?hl=sv&q=%22Fredriks++fotosida%22&btnG=Google-s%C3%B6kning&meta=","http://www.google.se/search?hl=sv&q=Fredriks+fotosida&btnG=Google-s%C3%B6kning&meta=","http://search.msn.se/results.aspx?FORM=MSNH&CP=1252&q=Fredriks+fotosida","http://www.altavista.com/web/results?itag=ody&q=Fredriks+fotosida&kgs=1&kls=0")
dim re
set re = new regexp
re.pattern = "(https?://[^/]+/)[^\?]+\?(?:[^q]|[^=]{2,}=[^&]*&)*q=([^&]+)"
re.ignorecase = true

for i = 0 to ubound(arr)
  set r = re.execute(arr(i))
  for each item in r
    for each item2 in item.submatches
      dim re2
      set re2 = new regexp
      re2.global = true
      re2.pattern = "(^(%22)+)|((%22)+$)"
      item2 = re2.replace(item2, "")
      re2.pattern = "\+"
      item2 = re2.replace(item2, "&nbsp;")
      response.write item2 & "<br>"
      set re2 = nothing
    next
  next
next

set re = nothing
```

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

## #5 — Calevan, 2005-10-03T21:38Z

det verkar fungera fint! ska göra några fler tester innan jag accepterar det helt som slutgiltligt! :)

vad i koden är det jag ska ursäkta dig för?

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

## #6 — Peter S, 2005-10-04T08:16Z

For-looparna och indenteringen skulle kunna göras snyggare. Sedan hade det inte varit fel med några radbrytningar här och där, för läsbarhetens skull.  :)

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

## #7 — Calevan, 2005-10-04T21:30Z

ok, men du tycker inte att din kod är ineffektiv eller?

nu är det ju så att svaret loopas ut hela tiden, om man vill ha in det i en databas så behöver man ju ha det i olika variabler först, dvs först vill jag sätta in sökmotorns namn i en variabel och sen sökordet i en annan. hur skulle man kunna få ut det på ett bra sätt med ovanstående kod? med item(0) och item(1) eller något sådant? och sen köra regexparna som är kvar på dem för att ersätta % och + tecken? då kanske item2 inte behövs eller tänker jag konstigt?

tack!

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

## #8 — Peter S, 2005-10-04T22:50Z

Jag har filat litet till på uttrycket och kommit fram till följande:

```
re.pattern = "(https?://[^/]+/)[^\?]+\?(?:[^q]|[^=]{2,}=[^&]*&)*q=(?:%22)?((?:[^&](?!%22&))*(?:.(?=%22))?)" 
re.ignorecase = true

for i = 0 to ubound(arr)
  set r = re.execute(arr(i))
  for each item in r
    searchengine = item.submatches(0)
    query        = item.submatches(1)

    set re2     = new regexp
    re2.global  = true
    re2.pattern = "\+"

    query = re2.replace(query, "&nbsp;")

    set re2 = nothing

    ' insert into foo values(searchengine, query)
  next
next
```

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

## #9 — Calevan, 2005-10-05T22:43Z

tackar! funkar utmärkt!

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

## #10 — desdecado, 2005-10-06T12:54Z

Tilläggas bör att du kan köra en urldecode på url'en innan så slipper du alla %22, + (space) etc etc.

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

## #11 — Peter S, 2005-10-06T15:45Z

Finns det en sådan funktion i ASP/VBScript?

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

## #12 — K@llen, 2005-10-06T15:57Z

> **Peter S skrev:**
>
> Finns det en sådan funktion i ASP/VBScript?

Så vitt jag vet så är svaret nej. :)

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

---

Tråden på webben: https://www.webforum.nu/amne/webbutveckling/135167-plocka-ut-två-saker-ur-en-sträng
