# Mit Regex suchen, aber nur Teil des Regex ersetzen



## Mr. Brooks (8. September 2017)

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


```
[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.


----------



## Bratkartoffel (8. September 2017)

Hi,

das kannst du mit Matching Groups erreichen:

```
([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):

```
sed -i 's/([a-z])([1-3])([a-z])/\142\3/' datei.txt
```
Grüsse,
BK


----------



## Mr. Brooks (8. September 2017)

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


----------



## HonniCilest (8. September 2017)

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


```
'egwtA2fsglwg1gg5kl3R' -creplace '(?<=[a-z])[1-3](?=[a-z])', '#'
```


```
egwtA2fsglwg#gg5kl3R
```


----------

