---
title: "Kolla om pattern finns med regexp"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/90190-kolla-om-pattern-finns-med-regexp"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Addeladde"
published: "2003-11-12T15:30:16.000Z"
updated: "2003-11-15T16:00:43.000Z"
replies: 21
views: 428
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/90190-kolla-om-pattern-finns-med-regexp"
---

# Kolla om pattern finns med regexp

_Sida 1 av 2._

## #1 — Addeladde, 2003-11-12T15:30Z

Har försökt med detta men regexp tillåter inte det

```
IF NOT objRegExp.EOF THEN
   response.write("det finns ett pattern")   
END IF
```

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

## #2 — J.N., 2003-11-12T15:34Z

HEJ!

Att det inte fungerar förstår jag, du kan väl inte få End of File på ett RegExp?!

Prova <http://www.devguru.com/Technologies/vbscript/quickref/RegExp.html>, längst ned finns "Test Method".

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

## #3 — Addeladde, 2003-11-12T15:40Z

Man kan ju få eof i en tabell det är ju inte riktigt heller en fil.

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

## #4 — J.N., 2003-11-12T15:48Z

Hej!

Det kan du ju såklart få, men vad vill du egentligen göra, nu blev det ännu krångligare för mig att förstå vad du vill göra?

1\. Loopa genom ett rs, köra RegExp på något värde, kontrollera om det passade?

2\. Kontrollera om det finns ett värde tillagt till Regexp, dvs att det finns ett Pattern?

3\. Något annat?

4\. Eller du blev nöjd med svaret?!

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

## #5 — Addeladde, 2003-11-12T16:40Z

Jag vill bara kolla ifall det hittar något pattern i så fall så ska den hämta en sak ur en tabell och sedan göra erättsningen.

Det är ju onödigt att hämta information som ska ersätta regexp patternet om det inte finns någon matchning.

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

## #6 — J.N., 2003-11-12T16:56Z

HEJ!

Okej, lite av alt #1. Då ska du nog göra såhär:

```
pseudkod

if regexp.test then
  hämta ur tabell
  regexp.replace
end if
```

Fast, jag är inte med på varför, och på vad, du vill/ska testa först.
Vill du hämta olika data beroende på om uttrycket går igenom?

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

## #7 — Addeladde, 2003-11-12T17:00Z

```

strSok = "bla bla bla ordsomskaersattas bal bla ba"
pseudkod

if not regexp = NULL then
  strReplace = 'hämtas från databasen
  regexp.replace
end if
```

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

## #8 — Engine^, 2003-11-12T18:39Z

Är det egenskapen Pattern i Regex, som ska vara en tom sträng?
Eller ska ett visst mönster inte ge några träffar på en given text?

```
1.
Set objRX = New RegExp

strSource = "..."
[blue]  .
  .
  .[/blue]
If objRX.Pattern = "" Then
  strReplace = Databas.GetPattern
  strSource = objRX.Replace(strSource, strReplace)
End If

2.
Set objRX = New RegExp

strSource = "..."

objRX.Pattern = "\w"

If objRX.Test(strSource) Then
  strReplace = Databas.GetPattern
  strSource = objRX.Replace(strSource, strReplace)
End If
```

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

## #9 — Addeladde, 2003-11-12T19:06Z

Det är om ett visst pattern inte ger någon träff.

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

## #10 — Engine^, 2003-11-12T19:09Z

Då är det metoden Test() du ska använda

```
If Not objRegExp.Test([i]söksträng[/i]) Then
  [blue]'Mönstret gav noll träffar
  'hämta ett nytt mönster från databasen och testa igen...[/blue]
End If
```

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

## #11 — Erik Juhlin, 2003-11-13T07:40Z

> **Addeladde skrev:**
>
> Man kan ju få eof i en tabell det är ju inte riktigt heller en fil.

Man får inte EOF på tabellen med t.ex. SQL utan det är ADO som har propertyn EOF. Att det sen heter EOF kan tyckas vara ologiskt, men jag tror ADO även kan användas för filer. Sen så kan man med file också mena register...

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

## #12 — Addeladde, 2003-11-14T17:44Z

Har fått till det så här nu men jag skulle vilja få ut $1 till variabeln katalog. hur gör jag det?

```
<%

kod="test asddf sasdf asdf sdf f[blankettarkiv=testkatalog\kat]sdsf sddf sdf sdf sdfd "
'kod = "test asddfjsdadf sadsfdfjsdsdf sdsdjsdf sdsdfjsdfd sdffjsdsdf sdsf"
blankettarkivskod = "startkatalog = [katalog] "

Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\[blankettarkiv=(.+)\]"

IF objRegExp.test(kod) THEN
  
  katalog = ' Ska vara regexp objektet som står mellan (.+) alltså $1
	
  replacestring = objRegExp.Replace(kod, blankettarkivskod)
	
ELSE

  response.Write("Det finns inget pattern")

END IF

%>
```

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

## #13 — Sebbe, 2003-11-14T21:54Z

```
IF objRegExp.test(kod) THEN
  Set objMatches = objRegExp.Execute(kod)

  For Each Match In Matches
    katalog = Mid(Match.Value, 16)
    katalog = Left(katalog, Len(katalog) - 1)
  Next

  Set objMatches = Nothing
  replacestring = objRegExp.Replace(kod, blankettarkivskod)	
ELSE
  response.Write("Det finns inget pattern")
END IF
```

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

## #14 — Addeladde, 2003-11-14T22:01Z

Men om jag har två matchingar så får ju katalog det sista av matchingarna eller?

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

## #15 — Sebbe, 2003-11-14T22:08Z

Om du lagrar det i en array då? :)

```
IF objRegExp.test(kod) THEN
  Dim arrKatalog()
  i = 0
  Set objMatches = objRegExp.Execute(kod)

  For Each Match In Matches
    ReDim Preserve arrKatalog(i)
    arrKatalog(i) = Mid(Match.Value, 16)
    arrKatalog(i) = Left(arrKatalog(i), Len(arrKatalog(i)) - 1)
    i = i + 1
  Next

  Set objMatches = Nothing
  replacestring = objRegExp.Replace(kod, blankettarkivskod)	
ELSE
  response.Write("Det finns inget pattern")
END IF
```

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

## #16 — Addeladde, 2003-11-14T23:23Z

Det jag vill göra är att plocka ut katalog och sedan göra en ersättning i blankettarkivskod. Typ:

```
replace(blankettarkivskod(, "[katalog]" "$")
```

och sedan göra regexp replacen för varje objek.

```
replacestring = objRegExp.Replace(kod, blankettarkivskod)
```

Detta ska göras för varje pattern som hittas.
Det är för klurigt för att jag ska få till det i alla fall

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

## #17 — Sebbe, 2003-11-14T23:26Z

Va, nu fattar jag inte riktigt? :q

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

## #18 — Addeladde, 2003-11-14T23:38Z

Alltså om vi har en strkod som ser ut så här:

> \<html\>
>     \<title\>Testsida\</title\>
>   \</head\>
>   \<body\>
>     Här står lite text
>     \[blankettarkiv=testkat/underkat\]
>     här står lite mer text
>     \[blankettarkiv=testkat2\]
>   \</body\>
> \</html\>

Blankettarkivskoden ser ut så här:

> \<%
> katalog = \[katalog\]
> 
> 'diverse aspkod
> %\>

När man kört koden som vi försker få till så ska resultatet se ut så här:

> \<html\>
>     \<title\>Testsida\</title\>
>   \</head\>
>   \<body\>
>     Här står lite text
>     \<%
>     katalog =  testkat/underkat
> 
>     'diverse aspkod
>     %\>
>     här står lite mer text
>     \<%
>     katalog =  testkat2
> 
>     'diverse aspkod
>     %\>
>   \</body\>
> \</html\>

Klurigt klurigt  :)

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

## #19 — Sebbe, 2003-11-14T23:55Z

Typ så här kanske? Lite trött, så fel kan (kommer) förekomma. ;)

```
Dim arrKat()
i = 0

strKod = "<html>" &_
"<title>Testsida</title>" &_
"</head>" &_
"<body>" &_
"Här står lite text" &_
"[blankettarkiv=testkat/underkat]" &_
"här står lite mer text" &_
"[blankettarkiv=testkat2]" &_
"</body>" &_
"</html>"

strBlankett = "katalog = [katalog]" & vbCrLf & "'diverse aspkod"

Set RegExp = New Regexp
RegExp.IgnoreCase = True
RegExp.Global = True
RegExp.Pattern = "\[blankettarkiv=(.+)\]"
Set objMatches = RegExp.Execute(strKod)

For Each Match In objMatches
  ReDim Preserve arrKat(i)
  strKat = Mid(Match.Value, 16)
  strKat = Left(strKat, Len(strKat) - 1)
  arrKat(i) = strKat
  i = i + 1
Next

For j = 0 To UBound(arrKat)
  strTemp = Replace(Split(strBlankett, vbCrLf)(0), "[katalog]", arrKat(j))
  Response.Write(strTemp)
  Execute(Split(strBlankett, vbCrLf)(1))
Next

Set objMatches = Nothing : Set RegExp = Nothing
```

Det kommer bli svårt att göra det helt så dynamiskt som du tänker eftersom man bara kan köra Execute på ASP-kod, och om man använder en vanlig Response.Write() på koden skrivs den ut till webbläsaren och tolkas inte av servern.

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

## #20 — Addeladde, 2003-11-15T00:51Z

Jag sparar koden i asp-fil så det är lugnt

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/90190-kolla-om-pattern-finns-med-regexp  
Nästa sida: https://www.webforum.nu/amne/asp/90190-kolla-om-pattern-finns-med-regexp/page2.md
