Regex-Problem mit replace außerhalb des matching bereichs liegender Zeichenketten

babuschka

Top Contributor
Ich habe ein Problem.

Bei einer Zeichenkette, z.b.
Bla bla bla [Hallo] Bla X:12345 bla bla
soll der Wert innerhalb der eckigen Klammern (von mir aus auch inkl. der eckigen Klammer) erhalten bleiben.

Mittels replace funktioniert dies auch mit folgender Expression:
[^\[^\]](?=[^\]]*?(?:\[|$))

--> JavaScript RegExp Example: Online Regular Expression Tester

Zusätzlich, und das ist der Punkt an dem ich nicht mehr weiterkomme, soll auch noch das "X:" mit den 5 Zahlen übrig bleiben - also der Rest drum rum weggeschnitten werden.

Jemand eine Idee wie ich das miteinander verknüpfen kann? Ich habe gerade nen Knoten im Kopf.
 
[c]^.*?\[(.*?)\].*?(X:\d+).*?$[/c]
wäre eine Möglichkeit. Setzt aber voraus, dass das X: immer hinter der eckigen Klammer steht. Als Replacement text hast du dann folgendes:
[c]$1 $2[/c]
 
[c]^.*?\[(.*?)\].*?(X:\d+).*?$[/c]
wäre eine Möglichkeit. Setzt aber voraus, dass das X: immer hinter der eckigen Klammer steht. Als Replacement text hast du dann folgendes:
[c]$1 $2[/c]

Hi, Danke für den Input.
Das Problem ist u.a., dass ich am Server für die Regex die $1$2 Werte nicht angeben kann für die Ersetzung.

Ferner kann es sein, dass nur der Teil X:123 vorhanden ist UND/ODER der Teil in Eckigen Klammern.
In allen Fällen sollen dann die unnötigen Zeichen außerhalb der eckigen Klammer oder die nicht mit der Token-ID X:123 bleiben und der Rest wegfallen.
 

Neue Themen


Zurück
Oben