mynethome.de

21. Juni 2018 um 12:43 Uhr

RegExp in Aktion: Suffix als Filterkriterium

Immer mal wieder bin ich froh, das es RegularExpressions gibt. Sie helfen sehr dabei, schnell Änderungen in umfangreichen, strukturierten Texten (z.B. Quellcode ;-) ) vorzunehmen.

Ab und zu passiert es mir, das ich mir einen regulären Ausdruck erarbeite und 2 Wochen später einen ähnlichen Fall habe, den RegExp aber nicht dokumentiert habe – und mir nochmal erarbeite. Das hilft zwar, das Schreiben regulärer Ausdrückezu üben, ist aber nicht unbedingt effizient ;-)

Daher fange ich mal an den Ausdruck, der mir heute geholfen hat festzuhalten:

Es geht darum, alle vorkommen von „document“ mit „documents“ zu ersetzen. Natürlich sollen dabei die Vorkommen, bei denen das „s“ bereits angehängt ist, nicht ersetzt werden um nicht mit einem „documentss“ zu enden. Zum Testen als die Varianten:

document
documentReader
documentsFolla
Document

Des Rätsels Lösung ist der Ausdruck

(document)(?!s)

Den man z.B. im Sublime Editor oder in IntelliJ IDEA problemlos verwenden kann, wie im Screenshot zu sehen.

Bei dem ?! handelt es sich um ein sogenanntes „negative lookahead“, mehr dazu unter regular-expressions.info

Have fun! :)

2 Reaktionen zu “RegExp in Aktion: Suffix als Filterkriterium”

  1. Gravatar Icon Marc

    Warum nicht einfach:

    /(document)[^s]/

    Scheint in rubular.com und regex101.com zu funktionieren :)

  2. Gravatar Icon Markus

    Weil das das Zeichen nach dem t mit matched, im Beispiel oben den Zeilenumbruch in der ersten Zeile und das R in der zweiten.
    Wenn ich damit ein replace mit „documents“ mache bekomme ich z.b. nicht documentsReader sondern documentsdocumentseader, was die erste und zweite Zeile zusammen ergibt ;)

Einen Kommentar schreiben


Gravatar unterstützt

mynethome.de wird erstellt mit WordPress
Beiträge (RSS) und Kommentare (RSS)

(c) 2005 - 2023 Markus Schlichting - Mastodon