日期:2014-05-16  浏览次数:20761 次

【求助】DotNet正则表达式非获取匹配,获取的值包含不要获取的值

new Regex(@"(?:AAA\<\[)\w+").Match(@"AAA<[Some");//结果是AAA<[Some
//但是我要的结果仅仅是Some


按照正则表达式的文档
---------------------------------------------------------------------------------------
(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
---------------------------------------------------------------------------------------
不应该是不获取AAA<[部分的么?

------解决方案--------------------
是不产生组,不是不匹配字符,用 (?<=AAA\<\[)
------解决方案--------------------
那个只是不加入分组中,但是还得去匹配

你可以如此写  (?<=AAA\<\[)\w+