/ Forside/ Teknologi / Udvikling / Andet udvikling / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Andet udvikling
#NavnPoint
BertelBra.. 1370
natmaden 870
srhansen 670
_michael_ 510
katekismus 500
MatrixRev.. 500
molokyle 462
refi 370
Teil 328
10  EXTERMINA.. 320
Regular expression?
Fra : gandalf
Vist : 891 gange
200 point
Dato : 01-01-01 18:06

Er der nogle som kan fortælle mig hvordan man søger efter regular expression.

Og er det muligt at replace en fundet regular expression med en anden string?

 
 
Accepteret svar
Fra : smilly

Modtaget 210 point
Dato : 01-01-01 18:59

Hi Gandalf,

Her er en liste over alle de regler du kan sætte op i en regular expression.

Regelsæt
*******
"" : en string

[] : et karaktersæt. "[123abc]" næste karakter skal være 1 eller 2 eller 3...osv.

? : antal 1 eller 0 "[123]?"

?=: kig fremad for eksistens "windows (?=95|98|nt|2000)"

?: : "kvind(?:e|er)" istedet for "kvinde|kvinder"

?!: kig fremad for ikke eksistens "windows (?!95|98|nt|2000)"

* : antal >= 0 "[123]*"

+ : antal > 0 "[123]+"

{n} : n antal er krævet. "[123]{5}"

{n,m} : minimum n, maximum m "[123]{3,5}"

. : alt pånær newline ".*" finder alt som ikke er newline

^ : ikke indholdt, bliver også brugt til at fortælle skal være i starten af strengen/linien. ikke = "[^123]" starten = "^123"

$ : skal være i slutningen af strengen, hvis multiline er sat til er det slutningen af linien. "123$"

\ : specialle karakter. (se nedenfor)

() : indre regular expression. "([123]*|[abc]*)"

| : eller "window|dos"

Specialle karakter
*************
\d : tal [0-9]
\D : ingen tal [^0-9]
\f : form-feed (0x0c)
\n : new-line (0x0a)
\r : carriage return (0x0d)
\s : whitespace [ \f\n\r\t\v]
\S : ingen whitespace [^ \f\n\r\t\v]
\t : tab (0x09)
\v : vertical tab (0x0b)
\w : ord (bogstaver + tal + underscore) [a-zA-Z0-9_]
\W : ingen ord [^a-zA-Z0-9_]
\xn : hex \x04
*************************************

Her er så en function som kan bruges til at replace alle de steder din regular expression bliver fundet, med en ny string.

<%
Function RegExpReplace(strInput, strPattern, strReplace)
Dim regex, match, matches, Position, strReturn
Position = 1
strReturn = ""


Set regex = New RegExp

regex.Pattern = strPattern
regex.IgnoreCase = True
regex.Global = True
Set matches = regex.Execute(strInput)

For Each match In matches
strReturn = strReturn & Mid(strInput, Position, match.FirstIndex + 1 - Position)

strReturn = strReturn & Replace(strReplace, strPattern, match.Value)
Position = Len(match.Value) + match.FirstIndex + 1
Next

strReturn = strReturn & Mid(strInput, Position, Len(strInput))

RegExpReplace = strReturn
End Function
%>

<%= RegExpReplace("123 en test 234 endnu en test","[\d]+","<b>dette var et tal</b>") %>

Dette lille eksempel vil fjerne alle tal og lave om til string "<b>dette var et tal</b>".

Håber dette hjælper dig lidt på vej

Smilly

Godkendelse af svar
Fra : gandalf


Dato : 01-01-01 19:02

Tak for hjælpen Smilly,

Det hjalp mig i allerhøjeste grad.

Gandalf.

Kommentar
Fra : Nyhedsbruger


Dato : 02-01-01 00:38

gandalf wrote:
>
> Er der nogle som kan fortælle mig hvordan man søger efter regular expression.
>
> Og er det muligt at replace en fundet regular expression med en anden string?

Hvis du har vb-script version 5 (eller derover) gøres det via RegExp
objeket:
http://msdn.microsoft.com/scripting/vbscript/doc/vsobjRegExp.htm
http://msdn.microsoft.com/scripting/vbscript/doc/reconIntroductionToRegularExpressions.htm

--
Lauritz

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste