我有回复文字:

Cuoc no truoc -2.134VND. Cuoc phat sinh tam tinh den 31/08/2018:
3`2.666VND (da tru KM,goi cuoc...). TKFastpay: 0VND.Tra 01.Trang sau 02.Thoat\",15


我想得到的结果是"VND" -> -2.13432.6660之前的金钱价值。

我有正则表达式

String regex = "(?<![^=])([\\d]*)(?!$[VND])";


但它不起作用。
请帮我!

最佳答案

您可以在VND (?=之后使用正向超前\b和单词边界。

-?\d+(?:\.\d+)?(?=VND\b)

Regex demo

那会匹配


-?可选的减号(要也允许加号,可以使用可选的字符类[+-]?
\d+匹配一个或多个数字
(?:\.\d+)?可选的非捕获组,匹配点和一个或多个数字
(?=VND\b)断言右边是VND的正向超前


在Java中:

-?\\d+(?:\\.\\d+)?(?=VND\\b)

Demo Java

10-07 12:44