2017-05-19 5 views
1

Ich habe einen regulären Ausdruck:Regex Match Ziffern mit Look-Ahead-

(\d{1,20}) 

Wich match: JPY; 7112630;

In dieser Zeichenfolge ich nur die Ziffern fangen wollen: si Ich benutze: $ 1 Aber ich will auch „.00" nach den Ziffern hinzufügen, damit ich benutze: 1,00

$ Aber jetzt will ich auch passen die Ziffern, nur wenn ich vorher JPY habe.

Ich versuche:

(?=JPY;\s*)(\d{1,20}) 
(?<=JPY;\s*)(\d{1,20}) 

Kein Erfolg!

Antwort

1

Sie können eine Gruppe Capturing verwenden statt der unendlichen Breiten positive Lookbehind:

(JPY;\s*\d{1,20}) 

Und mit $1.00 ersetzen. Siehe regex demo.

Je nach Regex-Engine, können Sie die (...) einfangende Klammern, entfernen und $0 oder $& anstelle des $1 im Ersetzungsmuster verwenden.

Wenn Sie diese Werte auch als ganze Wörter abgleichen müssen, schließen Sie sie mit Wortgrenzen ein: \b(JPY;\s*\d{1,20})\b.

+1

Vielen Dank! Es klappt – toto