Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 2位后字符串上的正则表达式拆分_Java_Regex_String - Fatal编程技术网

Java 2位后字符串上的正则表达式拆分

Java 2位后字符串上的正则表达式拆分,java,regex,string,Java,Regex,String,如何将字符串拆分为有效的货币或双格式。我知道所有的值只有两个小数 范例 String line = "3850.439.00 0.00 260.00 23"; 因此,3850.439.00不正确,需要拆分 我有这个 String[] arr = line.split("\\d+.(\\.\\d{2})"); 但是结果不正确-9.00 0.00 23 所需的结果将是3850.43 9.00 0.00 260.00 23而不是split您可以使用此反向查找正则表达式从输入中获取所有有效匹配项:

如何将字符串拆分为有效的货币或双格式。我知道所有的值只有两个小数

范例

String line = "3850.439.00 0.00 260.00 23";
因此,
3850.439.00
不正确,需要拆分

我有这个

String[] arr = line.split("\\d+.(\\.\\d{2})");
但是结果不正确-
9.00 0.00 23


所需的结果将是
3850.43 9.00 0.00 260.00 23

而不是
split
您可以使用此反向查找正则表达式从输入中获取所有有效匹配项:

(?<!\.)\d+(?:\.\d{2})?
(?

(?是在前面的字符为点时断言失败的负查找

Java代码:

final String regex = "(?<!\\.)\\d+(?:\\.\\d{2})?";
final String string = "3850.439.00 0.00 260.00 23";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
}

final String regex=“(?您可能还想在每个空格处拆分?@XtremeBaumer Yes回答得非常好,很好,谢谢您的快速回复