Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Regulärer Ausdruck zum erkennen von <Files *> (https://www.delphipraxis.net/67586-regulaerer-ausdruck-zum-erkennen-von-files-%2A.html)

faux 17. Apr 2006 10:01


Regulärer Ausdruck zum erkennen von <Files *>
 
Hallo!

Ich bin gerade dabei ein Syntaxhighlightschema für htaccess-Dateien für GeSHi zu basteln.
Klappt auch alles ganz gut und bin schon fast fertig. Jedes Attribut und Schlüsselwort wird erkannt und auch gehighlighted.
Jedeoch habe ich Probleme mit den htaccess-Bereichen <Files> und <FilesMatch>. Diese muss ich per RegEx ausfündig machen, so dass ich sie highlighten kann. Folgendes ist möglich:
Code:
<Files>

<Files datei.ext>
  einträge
</Files>

<Files ~ "\.(ext1|ext?)$">
Ich muss jetzt einen RegEx-Ausdruck basteln, der das einleitende Wort <Files> erkennt, auch wenn zwischen dem s und > etwas steht. Ich weiß: Anfängerbeispiel, ich bin aber einfach zu dumm dazu... :wall:
Frage 1: Wie kann ich <Files überhaupt in den regulären Ausdruck bringen?
Mein Versuch:
Code:
(<Files){1}[ ]{1}.*(>){1}
Mit (<Files){1} wollte ich überprüfen, ob diese Zeichenkette genau einmal vorkommt, was jedoch nicht funktioniert. :?

Liegts an dem < ? Denn ich hätte sonst alles aus der PHP-Doku.

Mein nächster Versuch wäre dann
Code:
(\<Files)[\s]+.*(\>)
Was jedoch auch nicht geht... :cry:

Grüße
Faux

jfheins 17. Apr 2006 10:08

Re: Regulärer Ausdruck zum erkennen von <Files *>
 
Also nach PCRE würde ich sagen:
Code:
#<Files( .*)?>#
(ohne Garantie natürlich ...)

faux 17. Apr 2006 10:09

Re: Regulärer Ausdruck zum erkennen von <Files *>
 
Hallo!

Deine Methode geht leider auch nur, wenn man < und > weglässt.
Wenn ich die < und > weglasse, geht meine Methode auch. Escapen hilft auch nicht. :wall:

:oops: :oops:
So gehts:
Code:
(&lt;Files)[\s]+.*(&gt;)
Danke!

Grüße
Faux

jfheins 17. Apr 2006 10:20

Re: Regulärer Ausdruck zum erkennen von <Files *>
 
Zitat:

Zitat von faux
Hallo!

Deine Methode geht leider auch nur, wenn man < und > weglässt.

:wiejetzt:

Das:
Code:
$regex = '#<Files( .+)?>#';

$dummy = '<?\'';

echo preg_match ($regex, '<Files>') . '
';

echo preg_match ($regex, '<Files datei.ext>') . '
';

echo preg_match ($regex, '<Files ~ "\.(ext1|ext?)$">') . '
';

echo preg_match ($regex, '<Filesdatei.ext>') . '
';

echo preg_match ($regex, '<Files >') . '
';
Gibtz folgendes aus:
Code:
1
1
1
0
0
Also geht ... oder nicht ?

(Ausdruck leicht verändert, aber sonst ?)

faux 17. Apr 2006 10:24

Re: Regulärer Ausdruck zum erkennen von <Files *>
 
Es liegt nicht am regulären Ausdruck, sondern am GeSHi.
Sorry.

Grüße
Faux


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz