2010-09-14 95 views
10

我有一个正则表达式看起来像这样是什么?你在正则表达式

/^(?:\w+\s)*(\w+)$*/ 

什么?:

+1

它是在那里混淆人。 – JAL 2010-09-14 04:48:14

+1

[非捕获组? (?:)](http://stackoverflow.com/questions/3512471/non-capturing-group) – HamZa 2014-04-06 08:10:06

回答

17

它表明子模式是一种非捕获子模式。这意味着无论是在(?:\w+\s)匹配的,即使它是由()封闭它不会出现在比赛名单中,只有(\w+)意志。

你还在寻找一个特定的模式(在这种情况下,单一的空白字符至少一个字以下),但你不关心什么实际匹配。

+1

+1更多信息:http://www.regular-expressions.info/brackets.html – 2010-09-14 03:07:53

2

这意味着才集团但不记得了分组的一部分。

默认情况下()告诉正则表达式引擎记住字符串中匹配它的模式的部分。但有时我们只是想组一个模式,而不会触发正则表达式的内存,要做到这一点,我们在地方的(

3

而且所提供的优良的答案使用(?:,其实用性也简化从提取群体所需的代码匹配的结果。例如,您的(\ w +)组被称为组1,而不必担心出现在其之前的任何组。这可能会提高代码的可维护性。