Geavanceerd tekst aanpassen met Geany en reguliere expressies

Als je in een grote lap tekst of in veel tekstbestanden tegelijk een tekst moet zoeken en vervangen dan is een programma zoals Geany of Notepad++ vaak een uitkomst. (Iets als sed kan ook maar dat is wel erg kaal.)

Complexe bewerkingen kun je doen met reguliere expressies. Recentelijk moest ik een aantal YAML bestanden aanpassen voor mijn werk; ik heb het gedaan met Geany en laat ze hieronder als voorbeelden zien. Notepad++ gebruikers, zie hier. Misschien heeft iemand er baat bij!geany

Geany regex voorbeelden

spatie achter puntkomma

vervang alle regels met

variabele:waarde

door

variabele: waarde

code:

(?<ws>\w+:)(?<fn>\w)
\1 \2

verplaats een waarde

verplaats de waarde van “product” naar “huidige_leverancier”

oorspronkelijk:

contract: # deze regel leeg laten
    # huidige leverancier is altijd via xx
    vorige_leverancier: Eon
    huidige_leverancier: 
    # product ("fixed" of "click" of "variabel")        
    product: Essent
    # type elektriciteit kan zijn: "groen" of "gewoon"
    type: gewoon

doel:

contract: # deze regel leeg laten
    # huidige leverancier is altijd via xx
    vorige_leverancier: Eon
    huidige_leverancier: Essent
    # product ("fixed" of "click" of "variabel")        
    product: 
    # type elektriciteit kan zijn: "groen" of "gewoon"
    type: gewoon

code:

(huidige_leverancier: )(\n.+\n.+product: )(\w+)
\1\3\2

onderaan toevoegen

stel dat de laatste regel “einddatum” bevat, en daarvoor nog “gas” voorkomt

code:

(gas: .+\n[\S\s]+.+einddatum.+\n)
\1\nextra regel\ntweede extra regel\n

een veld omzetten naar hoofdletters

Stel dat in onderstaande de adres_straat in hoofdletters moet

leveringsadres: # deze regel leeg laten
    adres_straat: Straat
    adres_nummer: 42
    adres_toevoegsel: 
    POSTCODE: 1234 ZZ
    PLAATS: Voorstad

code:

(leveringsadres:[\S\s]+)(adres_straat:)
\1ADRES_STRAAT:

testen

Test ‘m op bv. http://www.regexr.com/