我在我的代码中,除了其他模式之外,还有一个用来识别整数
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");
*由我发现的here提供,略微修改以适应。我对Regex没有很多经验,但这条线神奇地为我工作。
然后我继续包括浮点数:
Pattern patternNumber = Pattern.compile("\\d*\\.\\d+|\\d+");
但现在我似乎无法让它发挥作用。对于浮动数字部分,它会分割数字,给我:
1
.
6
我想要的是:
1.6
如果我单独使用,我发现它有效:
String input = "1.6";
String[] meta = a.split("\\D\\.\\D");
关于如何使这部分与split方法的其余表达式一起工作的任何想法?
答案 0 :(得分:1)
我认为split
不是最适合您目的的工具。
split
将拆分您的正则表达式上的输入字符串。例如,如果您使用正则表达式split
对1,2,3,apples
,
进行1
,则会获得2,
,3
apples
和{{1} }}
您复杂的split
正则表达式"(?:(?<=^|\\s)(?=\\S)|(?<=\\S|^)(?=\\s))\\b*(?:(?<=\\S)(?=\\s|$)|(?<=\\s)(?=\\S|$))|\\b"
基本上会尝试将字符串拆分为单词之间的边界(考虑字符串位于字符串开头/结尾处,或以{{开头) 1}}(.
))。
相反,明确查找数字本身要容易得多!只需明确匹配数字,而不是在数字之间的空格上拆分。
所以你使用正则表达式来表示数字/浮点..10
并使用\\d*\\.\\d+|\\d+
打印出匹配(而不是拆分)。
e.g:
myMatcher.group()
根据您想要的内容(例如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
}
),可以调整正则表达式。
答案 1 :(得分:0)
您可以拆分浮点数范围之外的任何一系列字符。
String input="x: 1.6 ..10";
String[] meta=input.split("[^0-9.-]+");
对于上述内容,meta将被分配{“1.6”,“。10”}
String[] example="123, -.456, 78.910 : 11 : -12".split("[^0-9.-]+")
这会产生{“123”,“ - 。466”,“78.910”,“11”,“ - 12”}