2010-09-14 99 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,而不必擔心出現在其之前的任何組。這可能會提高代碼的可維護性。