3 回答

TA贡献1982条经验 获得超2个赞
只需回答“或”问题,您只需使用a |
,然后您的模式将变为:
Pattern.compile("([a-z]|[A-Z])+")
是该+
值的1-n倍。
这里的问题是您的第一个String将为空,因为它将找到模式,因此它将拆分,但是模式的左侧为空。
按照YCF_L建议的方式进行操作绝对是必经之路,因为您要查找的是数字,而不是其余的数字。通常,您应该始终将模式应用于所需的内容,否则最终将Universe排除在外而只是获得一组10个数字。

TA贡献1802条经验 获得超10个赞
“使用拆分并检查是否为空”的一种变体是使用流和filter。
public class RegexNumOnly {
public static void main( String[] args ) {
String test = "Test123 is12 good443";
String[] tokens = test.split( "[a-zA-Z\\s]+" );
System.out.println( Arrays.toString( tokens ) );
System.out.println( Arrays.stream( tokens ).filter( s -> !s.isEmpty() )
.mapToInt( Integer::parseInt ).sum() );
}
}
我喜欢YCFmatcher().results()制作视频流,但我不知道Matcher会这样做。
添加回答
举报