首页 > 解决方案 > 如何在 Java 中用条件编写正则表达式?

问题描述

条件

我做什么

([\s]*\d+(\.{1}\d+)?[\s\,\s]+){7}(\d+(\.{1}\d+)?[\s]*){1}
                    ^ this   ^

没关系,除了一种情况。
在这个字符串上我得到了true,但需要false

String s1 = " 0 , 4.4 3.2,, 4.1      2 4 1 7.7";

我不能这样做:

数字可以只用一个逗号或不用逗号分隔,但在这种情况下必须有一个空格(一个或多个)。

标签: javaregex

解决方案


这是我想出的空格/逗号(也删除了一些多余的部分):

Pattern.compile("([\\s]*\\d+(\\.\\d+)?(?:\\s*,\\s*|\\s+)){7}(\\d+(\\.\\d+)?[\\s]*)");

至少,您提供的样本似乎可以满足您的需求。(使用{1}通常暗示你使用它的地方,所以我删除了那些)


推荐阅读