← Back to team overview

sslug-teknik team mailing list archive

Re: regulære udtryk og mig....

 

Kristian Vilmann <kvi@xxxxxxxx> writes:

> Opgaven er faktisk ret nem:
> Find en linie der indeholder strengen "QLogic" og starter på position 0
> Slet denne linie og alle efterfølgende linier, der ikke starter på
> position 0.
> Stop når der rammes en linie der igen starter på position 0. (Denne
> linie må ikke slettes.)

I perl:

    s/^\w+\s+QLogic.*?(?=^\w)//ms

Eller uden lookahead hvis man ønsker:

    s/^\w+\s+QLogic.*?(^\w)/$1/ms


Og med kommentare:

   s{  ^\w+ \s+ # En linje der begynder på pos=0
        QLogic  # Med en tekst der begynder med QLogic
        .*?     # Match indtil ...
        (?=^\w) # en linje der begynder i pos=0
    }{}xms;     # x - tillad ekstra mellemrum og kommentare
                # m - $ og $ matcher på linjeniveau og ikke strengniveau
                # s - dot matcher newline

> Man kunne jo bikse et perl-script sammen til formålet, men kan det ikke
> gøres smartere?

Det ved jeg nu ikke. Hvis du skal have hjælp til ovenstående, men selv
kan bikse et perlscript sammen, hvad vil du så helst skulle
vedligeholde op 3 måneder?

//Makholm


Follow ups

References