AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein RegEx != RegEx? PHP ereg liefert immer nur REG_BADRPT
Thema durchsuchen
Ansicht
Themen-Optionen

RegEx != RegEx? PHP ereg liefert immer nur REG_BADRPT

Ein Thema von static_cast · begonnen am 1. Mai 2006 · letzter Beitrag vom 5. Mai 2006
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#21

Re: RegEx != RegEx? PHP ereg liefert immer nur REG_BADRPT

  Alt 5. Mai 2006, 06:29
Zitat von MathiasSimmack:
Damit geht es
Code:
"/^\[code\](.*?)(^\[[^code]|\Z)/msi"
puh, sicher?
Code:
(^\[[^code]|\Z)
heisst doch umschrieben:
(       beginne match
^       Zeilenanfang
\[      Zeichen: Eckige Klammer auf
[^code] keines der Zeichen c, o, d oder e (einzelnes Zeichen)
|       oder
\Z     end of subject oder Zeilenumbruch am Ende
)      beende match
das [^code] kann dir glaube zum Verhängnis werden


Was den Single-Line-Comment angeht...

[Edit #1: hier stand mal wieder Shredder, den ich vorsichtshalber entfernt hab]

Da kommt sich irgendwo irgend etwas in die Quere bei Geshi.
Ohne alles liefert:

Code:
<pre>
<?php
$source1 ='; Kommentar
#define ISPP "bla"';
$source2 ='#define ISPP "bla"
; Kommentar';

$GESHI_SEARCH = '^;.*$';
$GESHI_REPLACE = '\\0';
$GESHI_MODIFIERS = 'm';

$source1 = preg_replace("#$GESHI_SEARCH#$GESHI_MODIFIERS", "<span style='color:#f00;'>$GESHI_REPLACE</span>", $source1);
$source2 = preg_replace("#$GESHI_SEARCH#$GESHI_MODIFIERS", "<span style='color:#f00;'>$GESHI_REPLACE</span>", $source2);
echo $source1."\n\n".$source2;

?>
</pre>
Das hier:
Code:
[color=#ff0000]; Kommentar[/color]
#define ISPP "bla"

#define ISPP "bla"
[color=#ff0000]; Kommentar[/color]
[Edit #2: Ich hab noch mal dran gebastelt]

Code:
<pre>
<?php
$source1 ='; Kommentar
#define ISPP "bla"';
$source2 ='#define ISPP "bla"
; Kommentar';

$GESHI_SEARCH[] = '@^;.*$@m';
$GESHI_SEARCH[] = '@^#.*$@m';
$GESHI_REPLACE[] = "<span style='color:#090;'>\\0</span>";
$GESHI_REPLACE[] = "<span style='color:#f00;'>\\0</span>";

$source1 = preg_replace($GESHI_SEARCH, $GESHI_REPLACE, $source1);
$source2 = preg_replace($GESHI_SEARCH, $GESHI_REPLACE, $source2);
echo $source1."\n\n".$source2;

?>
</pre>
erzeugt folgendes:
Code:
[color=#009900]; Kommentar[/color]
[color=#ff0000]#define ISPP "bla"

#define ISPP "bla"[/color]
[color=#009900]; Kommentar[/color]
Wenn du also die Compiler-Statements, die am Anfang stehn IRGENDWIE overriden kannst dann leg eine ähnliche regex wie bei den singleline-omments an

Überzeugen darfst du dich hier: http://www.cruiser-dev.de/matsim.php
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#22

Re: RegEx != RegEx? PHP ereg liefert immer nur REG_BADRPT

  Alt 5. Mai 2006, 15:16
Zitat von cruiser:
puh, sicher?
Richtige Frage an den Falschen. Nein, bin ich nicht, da ich mich nicht wirklich mit diesen regulären Ausdrücken auskenne. Ich habe es bisher so gedeutet: Finde alles nach einer [Code]-Sektion, bis zum Dateiende, bzw. bis zu einer neuen Sektion mit eckiger Klammer am Zeilenanfang, die nicht [Code] heißt. Das Ergebnis war witzigerweise exakt so formatiert wie im Inno Setup-Editor selbst:
[code=pre][Code]

{ ... jede Menge Pascal-artiger Code ... }

[Code]

// noch mehr davon

[Files]
...

Code:
...
Deswegen dachte ich, dass ich per Zufall die Lösung gefunden hätte.


Zu den Kommentaren kann ich bisher nichts sagen, weil du deine PHP-Lösung selbst per "preg_replace" geschrieben hast. Problem: Ich benutze GeSHi. Darum die Array-Definition, die so an den Highlighter gegeben wird, der dann im Text nach passenden Matches sucht. Deswegen diese Namen wie GESHI_REPLACE, usw.

Na ja, wenn ich nicht vorwärts komme, dann suche ich mir einen anderen Highlighter. Irgendwo habe ich noch den Beautifer liegen.
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#23

Re: RegEx != RegEx? PHP ereg liefert immer nur REG_BADRPT

  Alt 5. Mai 2006, 15:33
Bin mal nich so und übersetz es in dieses Array-Format (womit sicher auch nur preg_replace gefüttert wird):

Code:
2 => array(
   GESHI_SEARCH => '^;.*$',
   GESHI_REPLACE => '\\0',
   GESHI_MODIFIERS => 'm',
   GESHI_BEFORE => '<span style="color:#090;">',
   GESHI_AFTER => '</span>'
)

3 => array(
   GESHI_SEARCH => '^#.*$',
   GESHI_REPLACE => '\\0',
   GESHI_MODIFIERS => 'm',
   GESHI_BEFORE => '<span style="color:#f00;">',
   GESHI_AFTER => '</span>'
)
So müsst es GeSHi genau so formatieren, wie ich im Beispiel, gesetz dem Fall, dass dieses BEFORE / AFTER für Formatierungen ist

[Edit: noch mal zum nicht code ]

ersetz mal dieses:
Code:
"/^\[code\](.*?)(^\[[^code]|\Z)/msi"
durch dieses:
Code:
"/^\[code\](.*?)([\r\n]+\[(?!code)\]|\Z)/msi"
Du musst nur aufpassen dass du dir nur Match #1 also \\1 holst.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz