我有回复文字:
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.134
和32.666
和0
之前的金钱价值。我有正则表达式
String regex = "(?<![^=])([\\d]*)(?!$[VND])";
但它不起作用。
请帮我!
最佳答案
您可以在VND (?=
之后使用正向超前\b
和单词边界。-?\d+(?:\.\d+)?(?=VND\b)
Regex demo
那会匹配-?
可选的减号(要也允许加号,可以使用可选的字符类[+-]?
\d+
匹配一个或多个数字(?:\.\d+)?
可选的非捕获组,匹配点和一个或多个数字(?=VND\b)
断言右边是VND
的正向超前
在Java中:-?\\d+(?:\\.\\d+)?(?=VND\\b)
Demo Java