malte: RexExpr: "bis zum ersten Vorkommen"

Hallo,

lese aus einer Apache-conf Daten aus.

Hier ein Ausschnitt

<IfModule>
#Daten
</IfModule>

<VirtualHost>
#Daten
</VirtualHost>

<IfModule>
#Daten
</IfModule>

Da ich nur an "VirtualHost" interessiert bin, schneide ich den Rest weg:

s/<ifmodule.+>(.|\n|\s)+</ifmodule>//gi;

(bin ein bisschen Newbie auf dem Gebiet RegExp, also nicht wundern, falls etwas "total umständlich" ist ;-).

Bei mir wird jetzt immer alles gelöscht, was ja auch verständlich ist. Den Teil zwischen <ifmodule.+> und </ifmodule> kann ich aber unter keinen Umständen weiter spezifizieren.
Kann man also der RegExpr irgendwie sagen, dass der unmittelbar folgende Ausdruck(steil) (in meinem Fall "</ifmodule>") gelten soll und nicht der letzte o.ä. ?

Habe schon überlegt, ob es mit "global" zusammenhängt... aber weder mit noch ohne (noch mit "once") funktioniert es :-(

Komme einefach nicht weiter...

  1. Hi malte,

    <IfModule>
    #Daten
    </IfModule>

    <VirtualHost>
    #Daten
    </VirtualHost>

    <IfModule>
    #Daten
    </IfModule>

    s/<ifmodule.+>(.|\n|\s)+</ifmodule>//gi;

    Vielleicht wäre es sinnvoll nach dem gleichen System einfach die Daten unter Virtual Host auszuschneiden und nicht die überflüssigen wegzunehmen. Ich kann dir keine RegEx-spezifische Hilfestellung geben, aber wenn der Block, der behalten werden soll nur einmal vorkommt, denke ich das es einfacher ist, nur eben diesen zu extrahieren.

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    sh:( fo:) rl:( br:> ch:~ n4:& ie:% mo:) va:| de:< zu:| fl:( ss:) ls:[
  2. Lieber malte,

    Da ich nur an "VirtualHost" interessiert bin, schneide ich den Rest weg:

    s/<ifmodule.+>(.|\n|\s)+</ifmodule>//gi;

    was soll denn    ^^^^^^^ ?

    Du möchtest doch alles, was zwischen <ifmodule> und </ifmodule> steht...
    Probier's doch mal mit folgendem Code (ungetestet):

    s/<ifmodule[^>]*>((?:.(!</ifmodule))*)</ifmodule>//gi

    Meine Klammern bedeuten:
    1. merke Dir das
    2. merke Dir das nicht (?:), gruppiere den Inhalt beliebig oft
    3. das Folgende darf jetzt nicht stehen (!...)

    Hoffentlich tut's... ;-)

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.