Toon posts:

[ASP] <! in Regular expressions

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

ik ben met regular expressions bezig en ik wil code / tekst binnen HTML commentaar vervangen, maar als ik naar HTML commentaar ga zoeken in de regular expression, gaat het fout bij de combinatie <! (= uitroepteken). Het gebruiken van een \ helpt ook niet.

Ik heb tot nu toe alleen geprobeerd het tussen dubbele quotes te zetten, maar dat heeft ook niet geholpen. Ik krijg verder geen foutmeldingen.

Heeft iemand een oplossing?


Alvast bedankt

[ Voor 20% gewijzigd door Verwijderd op 04-04-2005 15:15 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Hoi MaikelWillemse, en welkom op GoT. :)

In je topicstart, zoals je die nu plaatst, ontbreken er een aantal dingen die wij in Programming & Webscripting graag zien. Zo lees ik nergens terug wat je precies geprobeerd hebt, en waarom die oplossingen niet voldoen aan wat je hebben wil.

Er zijn enkele FAQs geschreven die iedereen gelezen zou moeten hebben alvorens een topic te openen. Je doet er goed aan deze nog eens door te nemen. :)
P&W FAQ - Het FAQ/Beleid topic
P&W FAQ - De "quickstart"

Om even inhoudelijk op je probleem in te gaan: heb je geprobeerd om als pattern '<!--(.*)-->' in te stellen, voor een non-greedy expressie, en vervolgens die tekst te vervangen door wat je hebben wil?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Als je het stukje code plaats waarin het fout gaat + eventueel de fout melding, dan kunnen we wat voor je doen. Dit is bijna puur gokwerk natuurlijk. :)

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
Ik krijg geen foutmelding, maar er wordt ook niets getoond.

Dit is mijn pattern: <!-- HTML_HIDE_START -->(.*)<!-- HTML_HIDE_END -->
Het is dus de bedoeling dat er tussen de twee stukken commentaar wordt gezocht, maar het gaat dus mis bij die combinatie van <!

Als ik of het ! of de < weghaal, werkt het wel

[ Voor 13% gewijzigd door Verwijderd op 04-04-2005 15:18 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Als je dan \<\! gebruikt? Of eventueel \\<\\! of \\\\<\\\\! Ik weet niet zeker hoe ASP met dat soort escapes omgaat.

Noushka's Magnificent Dream | Unity


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 07-05 15:06

sopsop

[v] [;,,;] [v]

Michali schreef op maandag 04 april 2005 @ 15:25:
Als je dan \<\! gebruikt? Of eventueel \\<\\! of \\\\<\\\\! Ik weet niet zeker hoe ASP met dat soort escapes omgaat.
\<\! zou genoeg moeten zijn voor ASP.

Verwijderd

Topicstarter
boppert schreef op maandag 04 april 2005 @ 15:26:
[...]

\<\! zou genoeg moeten zijn voor ASP.
Dat lijkt me ook ja

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Dus. Werkt het dan wel zo? En wat gaat er eigenlijk mis? Wordt de pagina verkeerd weergegeven of gewoon helemaal niet?

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
Michali schreef op maandag 04 april 2005 @ 15:35:
[...]

Dus. Werkt het dan wel zo? En wat gaat er eigenlijk mis? Wordt de pagina verkeerd weergegeven of gewoon helemaal niet?
De pagina wordt helemaal niet weergegeven

  • teun-v
  • Registratie: Maart 2005
  • Niet online

teun-v

Koffie? ja graag...

Probeer de tekens te zoeken met html tag chars bijvoorbeeld

code:
1
!  voor een !

kijk anders hier voor een overzicht van de overige tags

Ook gek op Ovalracen? | Canon EOS 350 D | Canon EF-S 10-22mm F/3.5-4.5 | Sigma 17-70 F/2.8-4.5 DC Macro | Canon EF 70-200 F/2.8L USM | >Blog< |


Verwijderd

Topicstarter
Ik heb nu het volgende (string = waarden uit mijn database):

Set objRegExp = New RegExp
objRegExp.Pattern = "\<\!--HTML_HIDE_START-->(.*)\<\!--HTML_HIDE_END-->"
objRegExp.Global = True

Set Colmatches = objRegExp.Execute(string)

for each objmatch in Colmatches
strTest = objRegExp.Replace(string, "---")
response.write strTest
next

Maar er wordt niks gevonden

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
probeer eerst een een klein gedeelte te laten matchen. <!--HTML_HIDE_START--> bijvoorbeeld. Als dat lukt kun je de rest proberen. Geef eens een voorbeeldje van wat string kan bevatten. (is string geen reserved keyword trouwens?)

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
Michali schreef op maandag 04 april 2005 @ 15:49:
probeer eerst een een klein gedeelte te laten matchen. <!--HTML_HIDE_START--> bijvoorbeeld. Als dat lukt kun je de rest proberen. Geef eens een voorbeeldje van wat string kan bevatten. (is string geen reserved keyword trouwens?)
Ik heb het al in kleine stukjes geprobeerd (ook <!--HTML_HIDE_START-->) en dat werkt ook al niet, maar als ik, zoals ik eerder zei, of de < of het ! weghaal werkt het wel.

Met string bedoelde ik een naam van de string, bijvoorbeeld strTest (en die string bevat waarden uit mijn database)

Verwijderd

Topicstarter
teun-v schreef op maandag 04 april 2005 @ 15:41:
Probeer de tekens te zoeken met html tag chars bijvoorbeeld

code:
1
!  voor een !

kijk anders hier voor een overzicht van de overige tags
Dit werkt ook niet.

Verwijderd

Topicstarter
Is er (echt) niemand die ook zoiets heeft gehad?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

MaikelWillemse: gebruik aub de edit knop als je wat wilt voegen aan een post. Als je een topic opnieuw onder de aandacht wilt brengen door een nieuwe post dan is dat prima, maar doe dat pas na 24 uur!

Heb je overigens http://msdn.microsoft.com...t56/html/vspropattern.asp al gezien? Daarin staat precies welke karakers er escaped moeten worden.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 07-05 15:06

sopsop

[v] [;,,;] [v]

Hier doet hij het prima:
http://www.regular-expressions.info/javascriptexample.html

Ingevoerd pattern:
code:
1
<!-- HTML_HIDE_START -->(.*)<!-- HTML_HIDE_END -->

De gebruikte zoekstring:
code:
1
hahahah<!-- HTML_HIDE_START -->hihihi<!-- HTML_HIDE_END -->hehehe

De replacement value:
code:
1
hohohoho

Het resultaat:
code:
1
hahahahhohohohohehehe

  • [harm]
  • Registratie: September 2001
  • Laatst online: 26-02-2025
Replace eerst de tags naar iets wat je wel kan gebruiken in je RegEx... op 4guysfromrolla staat een soortgelijke regex voor een print this page: http://www.4guysfromrolla.com/webtech/052701-1.2.shtml

Just when I thought I was out, THEY PULL ME BACK IN!


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 07-05 15:06

sopsop

[v] [;,,;] [v]

Ik heb het nogmaals getest, nu met Expresso, dan werkt hij niet. :)
Niet voor een gat te vangen, heb ik dit gedaan:
code:
1
<!--(.)HTML_HIDE_START(.)-->(.*)<!--/(.)HTML_HIDE_END(.)-->

Dan werkt hij wel.

  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

Ik denk ook echt dat je een foutje hebt gemaakt in het uitlezen van je resultaten ofzo, want dit werkt als een tierelier:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<% Option Explicit
Dim oRegEx, oMC, sText

sText = "dit is wat demotext" & vbCrLf &_
        "<!-- HTML_HIDE_START -->replace me<!-- HTML_HIDE_END -->" & vbCrLf &_
        "Deze tekst wordt niet vervangen.<br>" & vbCrLf &_
        "<!--HTML_HIDE_START-->replace me, maar dan zonder spaties<!--HTML_HIDE_END-->" & vbCrLf &_
        "<p>laatste stukkie html-code</p>." & vbCrLf
        
Set oRegEx = New RegExp
  oRegEx.Pattern    = "\<\!--\s*HTML_HIDE_START\s*-->(.*)\<\!--\s*HTML_HIDE_END\s*-->"
  oRegEx.ignoreCase = True
  oRegEx.multiLine  = True
  oREgEx.Global     = True
  
  Set oMC = oRegEx.Execute( sText )
    If ( oMC.Count = 0 ) Then
      Response.Write "Je regex heeft geen tekst gevonden die aan het patroon voldoet.<br>" & vbCrLf
    Else
      Dim x
      For x=0 To oMC.Count-1
        Response.Write "Result # "& x+1 & ": " & oMC( x ).subMatches( 0 ) & "<br>" & vbCrLf
      Next
    End If
  Set oMC = Nothing
Set oRegEx = Nothing
%>

Het geeft als output:
code:
1
2
Result # 1: replace me
Result # 2: replace me, maar dan zonder spaties

Ik heb wel je pattern iets aangepast, zodat ie ook om kan gaan met spaties tussen <!-- en HTML:
code:
1
\<\!--\s*HTML_HIDE_START\s*-->(.*)\<\!--\s*HTML_HIDE_END\s*-->

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 07-05 15:06

sopsop

[v] [;,,;] [v]

ow ja! \s was spatie :D. mja (.) werkt ook.

  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

boppert schreef op woensdag 06 april 2005 @ 10:48:
ow ja! \s was spatie :D. mja (.) werkt ook.
tja, maar dan matched ie dit ook: <!--AHTML_HIDE_START_-->...
Met een whitespace is toch veel netter :P
Bovendien zijn die haakjes daar niet nodig. Als je persé die haakje wilt dan, dan moet je je subMatch wel aanpassen van 0 naar 1.

nog ff miereneuke: \s is (in de meeste "dialecten" van RegEx) spatie, tab of newline (dus \r, \t en \n) B)

[ Voor 41% gewijzigd door wizzkizz op 06-04-2005 11:06 . Reden: ff mierneuke :) ]

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


Verwijderd

Topicstarter
Als ik mijn pattern aanpas naar \<\!--\s*HTML_HIDE_START\s*-->(.*)\<\!--\s*HTML_HIDE_END\s*--> werkt het nog niet.

Maar ik heb iets gevonden op http://www.4guysfromrolla.com/webtech/052701-1.2.shtml (link van harmerbe) en dat werkt, dus dat ga ik gebruiken.


Allemaal bedankt voor jullie tips trouwens

  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

Verwijderd schreef op woensdag 06 april 2005 @ 11:10:
Als ik mijn pattern aanpas naar \<\!--\s*HTML_HIDE_START\s*-->(.*)\<\!--\s*HTML_HIDE_END\s*--> werkt het nog niet.

Maar ik heb iets gevonden op http://www.4guysfromrolla.com/webtech/052701-1.2.shtml (link van harmerbe) en dat werkt, dus dat ga ik gebruiken.


Allemaal bedankt voor jullie tips trouwens
Lukt het executen van mijn stukje code op jouw pc/devserver wel? Want dat zou betekenen dat je op een of andere manier iets verkeerd uitleest. Anders is je pc/server brak (geconfigureerd).

P.S. Qua perfomance is dit stukje code beter dnkk (mits je het executen vervangt door oRegEx.Replace natuurlijk), omdat je maar 1 replace-actie hebt ipv maar liefst 3 om hetzelfde te bereiken.

[ Voor 17% gewijzigd door wizzkizz op 06-04-2005 11:27 ]

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


Verwijderd

Topicstarter
wizzkizz schreef op woensdag 06 april 2005 @ 11:24:
[...]

Lukt het executen van mijn stukje code op jouw pc/devserver wel? Want dat zou betekenen dat je op een of andere manier iets verkeerd uitleest. Anders is je pc/server brak (geconfigureerd).

P.S. Qua perfomance is dit stukje code beter dnkk (mits je het executen vervangt door oRegEx.Replace natuurlijk), omdat je maar 1 replace-actie hebt ipv maar liefst 3 om hetzelfde te bereiken.
Ik weet niet of het aan de server ligt, want alles gaat goed, totdat ik <! achter elkaar gebruik. Dan gaat het mis

  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

Verwijderd schreef op woensdag 06 april 2005 @ 11:36:
[...]


Ik weet niet of het aan de server ligt, want alles gaat goed, totdat ik <! achter elkaar gebruik. Dan gaat het mis
ja, want bij mij gaat het dan nog steeds goed :X

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.

Pagina: 1