java - 如何在 Java 中用条件编写正则表达式?
问题描述
条件:
- numbers 可以是 int 或 double (共 8 位)
- 数字只能用空格(一个或多个)和逗号(0 或一个)分隔
- 逗号只能在数字内(行首和行尾不能有逗号)
- 行首可能有空格(一个或多个)
- 行尾可能有空格(一个或多个)
我做什么:
([\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";
我不能这样做:
数字可以只用一个逗号或不用逗号分隔,但在这种情况下必须有一个空格(一个或多个)。
解决方案
这是我想出的空格/逗号(也删除了一些多余的部分):
Pattern.compile("([\\s]*\\d+(\\.\\d+)?(?:\\s*,\\s*|\\s+)){7}(\\d+(\\.\\d+)?[\\s]*)");
至少,您提供的样本似乎可以满足您的需求。(使用{1}
通常暗示你使用它的地方,所以我删除了那些)
推荐阅读
- javascript - 为什么 Firefox 执行 XMLHttpRequest 与 Chrome/IE 不同?
- docker - 在您的集群中找不到活动节点 Laravel Docker elasticsearch
- css - 如何安排按钮来填充利润?
- python - Postgresql, Python - 编辑日期/时间将其导出并将其插入 SQL
- java - 在“java 代码”中的 weka 3.8 中缺少 LibSVM 包装器(我已经安装了它并且可以在实验者中看到它)
- microsoft-graph-api - 在不使用客户端密钥的情况下获取 Microsoft Graph API 的访问令牌
- css - Primeract 和 nextjs webpack 配置
- kibana-7 - kibana 不能在 linux 机器上启动
- laravel - 判断更新 Laravel 版本是否成功
- r - 将向量粘贴到字符串