gpt4 book ai didi

java - 使用正则表达式捕获数字

转载 作者:行者123 更新时间:2023-12-01 06:38:33 25 4
gpt4 key购买 nike

我有这些包含数字组的字符串。我需要做的是捕获每组数字并为它们创建新的字符串。例如,在字符串:“60 32 28 Some Characters 0 0 0”中,我需要捕获并将 60, 32, 28, 0, 0, 0 放入单独的字符串中。这是我已经尝试过的一些代码:

public class First {

public static void main(String[] args) {

String one = "60 32 28 Some Characters 0 0 0";


Pattern a = Pattern.compile("[0-9]{2}.*?([0-9]{2}).*?([0-9]{2})");
Matcher b = a.matcher(one);
b.find();

String work = b.group();
String work1 = b.group(1);
String work2 = b.group(2);

System.out.println("this is work: " + work);
System.out.println("this is work1: " + work1);
System.out.println("this is work2: " + work2);

Pattern c = Pattern.compile("([0-9]{2})|([0-9])");
Matcher d = c.matcher(one);
d.find();

String work3 = d.group();
System.out.println(work3);



}

}

但是,我无法捕获每一个数字。我查看了其他教程,但我无法找到我的正则表达式做错了什么,或者除了使用正则表达式之外是否还有其他解决方案。我不使用子字符串,因为数字之间的文本通常长度不同。任何帮助将不胜感激。

最佳答案

String[] strings = one.split("[^\\d]+");

这会将一个或多个非数字的每个序列视为分隔符,并返回结果数组。几乎正是您想要的,对吧?

这也有效,但我通常会忘记意味着“不”的内置字符类(谢谢,@Pshemo):

String[] strings = one.split("\\D+");

需要注意的是:Strings 的第一个元素可能是空字符串。如果第一个字符不是数字,就会发生这种情况。来自@Ruslan Ostafiychuk,以下是我们如何通过去掉前导非数字来修复它:

String[] strings = one.replaceFirst("^\\D+","").split("\\D+");

关于java - 使用正则表达式捕获数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24271813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com