Java 修改regex以允许使用浮点数

Java 修改regex以允许使用浮点数,java,regex,Java,Regex,在我的代码中,除其他模式外,还有一种识别整数的模式 Pattern patternNumber = Pattern.compile("[0-9]+"); 要读取输入,我一直使用*: String input = "x: 1.6 ..10;"; String[] meta = a.split("(?:(?<=^|\\s)(?=\\S)|(?<=\\S|^)(?=\\s))\\b(?:(?<=\\S)(?=\\s|$)|(?<=\\s)(?=\\S|$))|\\b");

在我的代码中,除其他模式外,还有一种识别整数的模式

Pattern patternNumber = Pattern.compile("[0-9]+");
要读取输入,我一直使用*:

 String input = "x: 1.6 ..10;";
 String[] meta = a.split("(?:(?<=^|\\s)(?=\\S)|(?<=\\S|^)(?=\\s))\\b(?:(?<=\\S)(?=\\s|$)|(?<=\\s)(?=\\S|$))|\\b");
但现在我似乎无法让它工作。对于浮点数部分,它将数字拆分,得到:

1  
.  
6
我想要的是:

1.6
我发现,如果我单独使用:

 String input = "1.6";
 String[] meta = a.split("\\D\\.\\D");

关于如何使这一部分与split方法上的其余表达式一起工作,您有什么想法吗?

我认为
split
并不是适合您的最佳工具

split
将在正则表达式上拆分输入字符串。例如,如果使用正则表达式对
1,2,3,apples
,进行
split
,您将得到
1
2,
3
apples


复杂的
split
regex
”(?:(?您可以在浮点数中使用的字符范围之外的任何字符序列上进行拆分

String input="x: 1.6 ..10";
String[] meta=input.split("[^0-9.-]+");
对于上述情况,meta将被分配{“1.6”,“.10”}


这将产生{“123”、“-.456”、“78.910”、“11”、“-12”}

只是为了澄清一下,在你原来的字符串
x:1.6..10;
中,你想从
1.6
10
?@mathematic.coffee不,我没有。第一部分,我可以让它拆分输入,给我一个“数字、一个点和另一个数字“。但现在我想让它识别整个浮点数。很抱歉,我花了很长时间才回复。虽然你的回答很有道理,但我在将其添加到原始表达式时遇到了问题。无论我如何安排,我最终都不得不加上一个”\\b”,这打破了我的浮点数。关于我如何将你的答案与表达式组合在一起的任何线索?当然。指定你的表达式、应用它的测试用例,以及你想要的结果。你可能真的很接近。表达式、测试用例和结果都是我在最初的帖子上发布的。尽管可能很奇怪和愚蠢似乎,我在添加您的
[^0-9.-]时遇到了问题+
转换为开头问题中描述的表达式。例如,
x:1.6..10;
应该给我一个包含以下内容的拆分字符串:
x
1.6
,`
10
。它适用于除继续细分为
1.6
之外的所有内容de>1
6
如果将答案添加到一个更大的表达式中。希望它有意义。我明白了。你不仅仅是想提取浮点数,你还想在原始字符串中保留它们的上下文,甚至可能同时对其他单词和符号进行一些解析。考虑到你的答案的复杂性我想你应该考虑“滚动你自己”,你可以。你的字符串,一个字符一个字符地遍历它,决定何时到达单词边界并将该单词附加到ArrayList中,扔掉任何解释为分隔符的内容。你试图做的事情似乎并不奇怪或愚蠢……只是碰巧比从字符串中挑出数字更复杂。这击中了我的浮点这是一个非常复杂的数字问题。但是,我应该提到我使用的是字符串数组,因为我喜欢按照标记在输入字符串上出现的确切顺序索引标记,因此我决定使用“拆分”。我不喜欢过早澄清,尽管你的答案可能正是我的另一个项目所需要的。
String input = "x: 1.6 ..10;";
myPattern = Pattern.compile('\\d*\\.\\d+|\\d+');
myMatcher = Pattern.matcher(input);
while (myMatcher.find()) {
    System.out.println(myMatcher.group());
    // will print 1.6, .10
}
String input="x: 1.6 ..10";
String[] meta=input.split("[^0-9.-]+");
String[] example="123, -.456, 78.910 : 11 : -12".split("[^0-9.-]+")