/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Regular Expressions
Fra : Ghashûl


Dato : 20-02-01 22:26

Hej!

Jeg bruger regular expressions til at highlighte de keywords der er
blevet søgt på i en text.

Nu er problemet bare at man også kan søge med wildcard som er % men
RegExp finder jo ikke noget med det.

Hvilket wildcard skal jeg erstatte det med for at det virker i regexp?

Jeg prøvede bare at erstatte % med mellemrum men så finder den alle
hvor den ene halvdel af søgeordet indgår og alle hvor den anden
halvdel er på.

F.eks. søgeordet t%lk skulle gerne finde talk, men ikke alle t'er i
teksten.

--
Regards Sir Ghashûl, Knight of The alt.Roundtable <><
ICQ: 7223629
E-mail: stefan@bruhn.to
URL: http://www.ghashul.dk

 
 
Jonathan Stein (20-02-2001)
Kommentar
Fra : Jonathan Stein


Dato : 20-02-01 23:08

"Ghashûl" wrote:

> Hvilket wildcard skal jeg erstatte det med for at det virker i regexp?

I regular expressions, betyder "." (punktum) et vilkårligt tegn og ".+"
(punktum plus) et eller flere vilkårlige tegn. ".*" betyder nul eller
flere vilkårlige tegn. Du kan måske også få brug for "[^ ]*", som betyder
nul eller flere tegn, der _ikke_ er mellemrum.
Med lidt (eller meget) tålmodighed, burde det være muligt at finde en
komplet beskrivelse af syntaksen på http://msdn.microsoft.com.

M.v.h.

Jonathan




NeoSapia (20-02-2001)
Kommentar
Fra : NeoSapia


Dato : 20-02-01 23:42

Jonathan Stein skrev:
> Med lidt (eller meget) tålmodighed, burde det være muligt at finde en
> komplet beskrivelse af syntaksen på http://msdn.microsoft.com.

Hvis tålmodigheden slipper op kan du bare klikke her:
http://msdn.microsoft.com/scripting/vbscript/doc/jsgrpregexpsyntax.htm

/NS



Ghashûl (21-02-2001)
Kommentar
Fra : Ghashûl


Dato : 21-02-01 08:08

On Tue, 20 Feb 2001 22:08:20 GMT, Jonathan Stein <jstein@image.dk>
wrote:

>"Ghashûl" wrote:
>
>> Hvilket wildcard skal jeg erstatte det med for at det virker i regexp?
>
> I regular expressions, betyder "." (punktum) et vilkårligt tegn og ".+"
>(punktum plus) et eller flere vilkårlige tegn. ".*" betyder nul eller
>flere vilkårlige tegn. Du kan måske også få brug for "[^ ]*", som betyder
>nul eller flere tegn, der _ikke_ er mellemrum.
> Med lidt (eller meget) tålmodighed, burde det være muligt at finde en
>komplet beskrivelse af syntaksen på http://msdn.microsoft.com

Jeg kan ikke lige få det til at virke.
Det er sådan her jeg tjekker for regexp:

Function ReplaceTest(S, Pat)
Dim re
Set re = New RegExp
'Un-escape Pat
re.Pattern = "([\?\*\+\.\|\{\}\\\[\]\(\)])"
re.IgnoreCase = True
Pat = re.Replace(Pat, "\\$1")
' Udfør
re.Pattern = "(" & Pat & ")"
re.IgnoreCase = True
re.Global = True
ReplaceTest = re.Replace(S, "<b><A
STYLE=""background=#44640D"">$1</A></b>")
End Function


For n = LBound(Words) To UBound(Words)
   Lyrics = ReplaceTest(Lyrics, Words(n))
Next

Det jeg har gjort er så at køre en Replace(Keyword,"%",".") men der
sker ikke noget. (keyword er listen over ord, før den bliver lavet til
et array. Den replace bliver kørt i starten af siden, før det bliver
kørt igennem funktionen.

--
Regards Sir Ghashûl, Knight of The alt.Roundtable <><
ICQ: 7223629
E-mail: stefan@bruhn.to
URL: http://www.ghashul.dk

Jonathan Stein (21-02-2001)
Kommentar
Fra : Jonathan Stein


Dato : 21-02-01 15:29

"Ghashûl" wrote:

> 'Un-escape Pat
> re.Pattern = "([\?\*\+\.\|\{\}\\\[\]\(\)])"
> re.IgnoreCase = True
> Pat = re.Replace(Pat, "\\$1")

Du skal først lave din "%" -> "." replace _efter_ denne del - ellers bliver
punktummet også escapet, og det var jo ikke meningen. (Og så skal du nok
replace med ".*", da procent kan stå for flere tegn).

M.v.h.

Jonathan





Ghashûl (21-02-2001)
Kommentar
Fra : Ghashûl


Dato : 21-02-01 16:21

On Wed, 21 Feb 2001 14:29:17 GMT, Jonathan Stein <jstein@image.dk>
wrote:

>"Ghashûl" wrote:
>
>> 'Un-escape Pat
>> re.Pattern = "([\?\*\+\.\|\{\}\\\[\]\(\)])"
>> re.IgnoreCase = True
>> Pat = re.Replace(Pat, "\\$1")
>
> Du skal først lave din "%" -> "." replace _efter_ denne del - ellers bliver
>punktummet også escapet, og det var jo ikke meningen. (Og så skal du nok
>replace med ".*", da procent kan stå for flere tegn).

Tak for det!
Det virker jo bare!

--
Regards Sir Ghashûl, Knight of The alt.Roundtable <><
ICQ: 7223629
E-mail: stefan@bruhn.to
URL: http://www.ghashul.dk

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408868
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste