在Capture Group RegEx初学者中搜索

时间:2015-11-08 22:10:25

标签: regex

我确定存在的非常简单的问题,我无法在谷歌上找到它。

说我有这个文件:

Class of 2010
My favorite number 2012
123213 123123 ajehfga;hg;

我想抓住2010年,所以我会说:

Class of \d\d\d\d

但后来我想摆脱'等级。我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以将\d放入捕获组:

Class of (\d\d\d\d)

请参阅regex demo(请注意,在大多数情况下,您只能使用限制量词{n}Class of (\d{4}))。这是一种或多或少的通用机制和方法,用于获取带有正则表达式的子模式子匹配。

另一种选择是积极的观察:

(?<=Class of )\d\d\d\d

请参阅another demo

然而,在效率方面,后视是昂贵的。

答案 1 :(得分:0)

2010年级:/class of (\d{4})/i

我最喜欢的号码2012:/My favorite number (\d{4})/i

123213 123123 ajehfga; hg; :/(\d+)/

在php中你会这样做:

$matches = array();
if(preg_match('/class of (\d{4})/i', $haystack, $matches)) {
    echo $matches[1];
}

在javascript中你会这样做:

var year = haystack.match(/class of (\d{4})/i)[1];