Avatar billede fixxxer Nybegynder
05. december 2003 - 18:48 Der er 14 kommentarer og
1 løsning

Delphi: Reg. Exp.

Jeg leger lidt med reg. exp. i Delphi (bare så jeg ikke får kastet noget vanligt PHP kode i hovedet ;)

Jeg har et html tag som jeg blot vil hente alle values ud af. Den skal desuden tage højde for php og asp kode midt i det hele.

det jeg har er lige pt den her <[_a-zA-Z\d\-\.]([^>]*?)>

men den tager bare ikke højde for førnævnte server-side sprog
Avatar billede roenving Novice
05. december 2003 - 18:51 #1
Skal den medtage script-tags ?-)
Avatar billede fixxxer Nybegynder
05. december 2003 - 18:52 #2
ja meget gerne :)
Avatar billede fixxxer Nybegynder
05. december 2003 - 18:54 #3
den skal bare ikke stoppe parsingen, fordi der står <%aspsnot%> mit i det hele :)
Avatar billede roenving Novice
05. december 2003 - 19:13 #4
Kender ikke Delphi-syntaksen, men i javascript sender denne en masse info (en hel del overflødigt !-) over med en .match

/<[_a-zA-Z\d\-\. =\'\"]*|<\?|<%|\?>|\%>([^>]*?)>/g
Avatar billede fixxxer Nybegynder
05. december 2003 - 19:19 #5
eksmpel:

<a href="<%=mylink%>" class="dumdum" style="width: 75px; height: 89px;">

med din reg. exp bliver følgende trukket ud:

<%
Avatar billede roenving Novice
05. december 2003 - 19:25 #6
Jeg får:

<a href=",<,%>" class="dumdum" style="width: 75px; height: 89px;">

i javascript ...
Avatar billede fixxxer Nybegynder
05. december 2003 - 19:26 #7
spændende :)

så må der være en betydenlig forskel i det reg. exp. jeg bruger i delphi og javascript :P
Avatar billede roenving Novice
05. december 2003 - 19:31 #8
-- men der er i regExp'en heller ikke medtaget % og ?, så det der står indenfor <%...%> kommer ikke med ...
Avatar billede fixxxer Nybegynder
05. december 2003 - 19:31 #9
kan der laves om på det?
Avatar billede roenving Novice
05. december 2003 - 19:45 #10
/<?([_a-zA-Z\d\-\. \?\%\=\'\":]*)|(<\?[_a-zA-Z\d\-\. \?\%\=\'\":]*\?>)|(<%[_a-zA-Z\d\-\. \?\%\=\'\":]*\%>)([^>]?)>/g

giver:

<a href=",<%=mylink%,," class="dumdum" style="width: 75px,, height: 89px,,",,

-- og et gæt på forskellen går nok mere på, hvordan de forskellige metoder virker ...

jeg bruger her tekst.match(reg), måske skal den turneres anderledes i Delphi !-)
Avatar billede fixxxer Nybegynder
27. december 2003 - 14:22 #11
undskyld den lange svare tid men projektet faldt lidt til jorden i løbet af december.

jeg har nu leget mig lidt frem til følgende:

(?i)<([^>]*?) ([^>]*?)=(['"]?)([^>]*?)(['"]?)>

det trækker rigtig nok tags ud som
<font size="ghg" title="tis">


desuden ser det ud til at hvor du i dine reg. exp. bruger \ hyppigt forekommer de faktisk slet ikke i mine. jeg ved ikke om det har nogat at sige, men det kunne godt se sådan ud.


nu er mit eksempel stadigvæk ikke helt perfekt. den mangler stadig at tage højde for <% %> <? og ?> inde i tagget. har du en idé til det?
Avatar billede roenving Novice
28. december 2003 - 03:22 #12
Nu kender jeg jo ikke erklæringsbetingenserne i Delphi, men ellers er det generelt sådan, at man, når man erklærer en RegExp, _både_ skal escape i forhold til den string man erklærer og i forhold til RegExp'en ...

Altså skal tegn, som her speciel betydning inde in i string escapes og tegn, som har speciel betydning i RegExp'en escapes

-- så tegn i RegExp'en som skal escapes skal dobbelt-escapes i string-erklæringen ...
Avatar billede fixxxer Nybegynder
28. december 2003 - 04:12 #13
det må jeg prøve i morgen.

men jeg sad lige og kom i tanke om at SynEdit har en highlighter til HTML som er kompatible med asp og php tags. så hvis nogen har mod til at kikke på dens source så ligger svaret måske deri. jeg kan se at den også bruge reg.exp.
Avatar billede fixxxer Nybegynder
19. januar 2004 - 21:49 #14
nu vil det jo så ikke du ordenlig men det kommer nok på et eller andet tidspunkt.

jeg lukker spørgsmålet, mange tak for forsøget
Avatar billede fixxxer Nybegynder
19. januar 2004 - 21:49 #15
luk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester