在这里寻求正则表达式专家。我有一个包含数字的字符串,例如
abc 2 de fdfg 3 4 fdfdfv juk @ dfdfgd 45
我需要从这样的字符串中找到所有数字并总结一下。
我的Java代码如下:
public static void main(String[] args) {
String source = " abc 2 de fdfg 3 4 fdfdfv juk @ dfdfgd 45";
Pattern pattern = Pattern.compile("[\\w*\\W*(\\d*)]+");
Matcher matcher = pattern.matcher(source);
if (matcher.matches()) {
System.out.println("Matched");
// For loop is not executed since groupCount is zero
for (int i=0; i<matcher.groupCount(); i++) {
String group = matcher.group(i);
System.out.println(group);
}
} else {
System.out.println("Didn't match");
}
}
所以matcher.matches()返回true,因此我可以看到&#34;匹配&#34;打印。但是,当我试图获得群组时,期待数字,没有任何内容被打印出来。
有人可以指出我的正则表达式和分组部分有什么问题吗?
答案 0 :(得分:2)
只需在组中提取数字,而不用担心空格。
set.seed(1); f3 <- sample(f1,10);
f3;
## [1] g j n u e s w m l b
## Levels: a b c d e f g h i j k l m n o p q r s t u v w x y z
factor(c(f3,setdiff(1:nlevels(f3),as.integer(f3))),labels=levels(f3));
## [1] g j n u e s w m l b a c d f h i k o p q r t v x y z
## Levels: a b c d e f g h i j k l m n o p q r s t u v w x y z
结果:
总和:54
答案 1 :(得分:-1)
String[] arr=source.split("\\d+");
int sum=0;
for(String x : arr) {
int n=0;
try {
n=Integer.parseInt(x);
} catch(NumberFormatException nfe){}
sum+=n;
}
System.out.println("Sum: "+sum);