正则表达式:非捕获组仍然显示

时间:2015-12-25 03:34:44

标签: regex regex-lookarounds

我有一句话

The cow is fat. The cows are fat. The cowss are fat

我想仅使用正则表达式(要求)从中提取牛,牛,牛,没有java。也就是说,如果存在,则忽略所有尾随's。

我试过了

\cow[(?:s)]*\

但它给了我牛,牛,牛。我做错了什么?

3 个答案:

答案 0 :(得分:1)

*表示零个或多个字符。因此,您正在cow中捕获?:s和零个或多个字符,并且它不能用作非捕获组。 你为什么不用这个?

(cow)s*

答案 1 :(得分:1)

// [YOUR CODE] this last parenthesis is not needed. var average = ((q1+q2+q3)/192*.25 + (es1+es2+es3)/50*.55 + a/14*.2)*100); // [YOUR CODE WITHOUT LAST PARENTHESIS] this does not produce any errors. var average = ((q1+q2+q3)/192*.25 + (es1+es2+es3)/50*.55 + a/14*.2)*100; 将匹配字符串,但不要将匹配结果保存到组中。在您的情况下,如果您想匹配所有Non capturing group,并忽略所有跟踪。您应该将cow放入一个组中。

cow

答案 2 :(得分:1)

为什么不恰好匹配牛?



var str = 'The cow is fat. The cows are fat. The cowss are fat';
var cow = str.match(/(cow)/g);
console.log(cow);




输出是:["牛","牛","牛"]