1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Mit Regex suchen, aber nur Teil des Regex ersetzen

Dieses Thema im Forum "Sonstige Sprachen" wurde erstellt von Mr. Brooks, 8. September 2017.

  1. Mr. Brooks

    Mr. Brooks Grünschnabel

    Hallo,

    ich suche eine Möglichkeit nach bestimmten Regex in einem Textdokument zu suchen, aber nur einen bestimmten Teil des Suchergebnisses zu ersetzen. Ich suche beispielsweise nach

    Code (Text):
    1. [a-z][1-3][a-z]
    das heißt ein beliebiger Kleinbuchstabe, gefolgt von einer Zahl zwischen 1 und 3, gefolgt wieder von einem beliebigen Kleinbuchstaben.

    Es soll aber nur die Zahl ersetzt werden, nicht die Buchstaben. Die Buchstaben sind aber wichtig um die Suchergebnisse eindeutig zu finden. Ist das möglich? Ich verwendet Linux und als Editor meist Mousepad oder Kate. Mousepad kann aber keine Regex.
     
  2. Bratkartoffel

    Bratkartoffel gebratene Kartoffel Premium-User

    Hi,

    das kannst du mit Matching Groups erreichen:
    Code (Text):
    1. ([a-z])([1-3])([a-z])
    \1 => erster Buchstabe
    \2 => Zahl
    \3 => zweiter Buchstabe

    Mit diesen "Platzhaltern" kannst du dann beim ersetzen arbeiten. Wie das dann konkret aussieht hängt von der Bibliothek / Programmiersprache / Anwendung ab.

    Mit sed zum Beispiel (ungetestet, vorallem escaping):
    Code (Bash):
    1. sed -i 's/([a-z])([1-3])([a-z])/\142\3/' datei.txt
    Grüsse,
    BK
     
  3. Mr. Brooks

    Mr. Brooks Grünschnabel

    Danke, geht so auch mit Kate. Mit sed hab ich keine Erfahrungen.
     
  4. HonniCilest

    HonniCilest Erfahrenes Mitglied

    Mir persönlich sind Matching Groups nicht so geläufig, mir fällt da eher das Stichwort "look-around assertions" ein.

    Code (PowerShell):
    1. 'egwtA2fsglwg1gg5kl3R' -creplace '(?<=[a-z])[1-3](?=[a-z])', '#'
    Code (Text):
    1. egwtA2fsglwg#gg5kl3R
     
    Spyke gefällt das.
Die Seite wird geladen...