[Reg Exps]Alles matchen, ook newline

Pagina: 1
Acties:

  • mocean
  • Registratie: November 2000
  • Laatst online: 30-03 18:32
Ik heb een simpel template systeem, met bijv. de volgende code:
code:
1
2
3
html ...
[#contact to=ben@mocean.nl" from="webmaster@mocean.nl" subject="Moceansitebericht"#] 
html...


Die filter ik eruit met een regexp (in php):
$pattern="(\\[#(.*)#\])";

Maar dit pattern pakt geen enters/newlines binnen de 'tag'
Als je het dan zo doet:
code:
1
2
3
4
5
html ...
[#contact to=ben@mocean.nl" 
    from="webmaster@mocean.nl" 
    subject="Moceansitebericht"#] 
html...

Werkt het niet meer. Ik kan wel een newline matchen met een regular expression, maar niet alles inclusief newlines... Weet iemand hoe ik ook enters/newlines mee kan matchen in de (.*) ?

Koop of verkoop je webshop: ecquisition.com


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:59

crisp

Devver

Pixelated

/s

Intentionally left blank


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

(.|\n*)

Dus: alle alfanumerieke karakters OF een newline (ik ben wel ff vergeten wat het newline karakter in regexps nou ook alweer was)
edit:
dat was dus idd \n

[ Voor 11% gewijzigd door Not Pingu op 27-09-2004 18:59 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • mocean
  • Registratie: November 2000
  • Laatst online: 30-03 18:32
$pattern="(\\[#([\s|\S]*)#\])";
deze matcht teveel, dus ik ga even zoeken hoe die alles gaat matchen, behalve het sluitende #]
Gunp01nt schreef op 27 september 2004 @ 18:56:
(.|\n*)

Dus: alle alfanumerieke karakters OF een newline (ik ben wel ff vergeten wat het newline karakter in regexps nou ook alweer was)
edit:
dat was dus idd \n
$pattern="(\\[#(.|\n*)#\])";
die matcht dus helemaal niks :)

Koop of verkoop je webshop: ecquisition.com


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Wacht, het moet denk ik ook ((.|\n)*) zijn.

Certified smart block developer op de agile darkchain stack. PM voor info.


  • mocean
  • Registratie: November 2000
  • Laatst online: 30-03 18:32
Gunp01nt schreef op 27 september 2004 @ 19:51:
Wacht, het moet denk ik ook ((.|\n)*) zijn.
Hij 'werkt' maar is ook te greedy: pakt alles binnen de ((.|\n)*) dus ook de #] als afsluiting. Ik heb nu dit, en dat werkt ook:
$pattern="(\\[#([^#]*)#\])";

alles behalve # matchen!

Bedankt toch voor de tips, en wat blijven regular expressions soms moeilijk te doorgronden!

[ Voor 16% gewijzigd door mocean op 27-09-2004 20:21 ]

Koop of verkoop je webshop: ecquisition.com


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

$pattern="(\\[#((.|\n))+?#\])"; zou dat ook moeten doen. Zorgt iig niet voor problemen als er een # tussen de 2 [# #] staat :) want zo te zien zou dat kunnen voorkomen

Certified smart block developer op de agile darkchain stack. PM voor info.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:59

crisp

Devver

Pixelated

mocean schreef op 27 september 2004 @ 19:11:
[...]


$pattern="(\\[#([\s|\S]*)#\])";
deze matcht teveel, dus ik ga even zoeken hoe die alles gaat matchen, behalve het sluitende #]
nee, /s != \s
/s is een modifier, om precies te zijn de PCRE_DOTALL modifier waarmee een punt dus alles matched inclusief newlines. Zie http://nl3.php.net/manual...cre.pattern.modifiers.php
(er van uitgaande dat je PCRE syntax gebruikt en geen POSIX)

[ Voor 7% gewijzigd door crisp op 28-09-2004 00:35 ]

Intentionally left blank


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Kortom, gebruik PCRE ipv POSIX regular expressions ;) Die zijn nl. wat flexibeler

Kijk meteen even naar greediness op http://nl3.php.net/manual...e.pcre.pattern.syntax.php

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Je komt wel in de problemen met greedyness op deze manier.
Iemand anders even zo vriendelijk me te helpen met toelichten? Ben moe vanavond.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
MUBA schreef op 28 september 2004 @ 20:15:
Je komt wel in de problemen met greedyness op deze manier.
Iemand anders even zo vriendelijk me te helpen met toelichten? Ben moe vanavond.
Je hebt toch een greedy/not greedy teken daarvoor. (In PCRE is dat het vraagteken.) En je kunt ook een modifier meegeven om doorheen de hele regexp de greedyness in te stellen...

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1