2011-02-03 129 views
10

我试图从字符串中提取值在<和<之间的值。但他们可能会发生多次。RegEx在字符串中多次匹配

任何人都可以帮助正则表达式来匹配这些;

this is a test for <<bob>> who like <<books>> 
test 2 <<frank>> likes nothing 
test 3 <<what>> <<on>> <<earth>> <<this>> <<is>> <<too>> <<much>>. 

然后我想要通过GroupCollection来获取所有值。

大大收到的任何帮助。 谢谢。

回答

28

使用提前了积极的外观和向后看断言相匹配的尖括号,用.*?匹配这些括号之间最短的字符序列。通过迭代Matches()方法返回的MatchCollection来查找所有值。

Regex regex = new Regex("(?<=<<).*?(?=>>)"); 

foreach (Match match in regex.Matches(
    "this is a test for <<bob>> who like <<books>>")) 
{ 
    Console.WriteLine(match.Value); 
} 
+0

没有双关语意,但这正是我所追求的。非常感谢您的快速回复。 – 2011-02-03 22:40:23

1

您可以尝试下列操作之一:

(?<=<<)[^>]+(?=>>) 
(?<=<<)\w+(?=>>) 

然而,你将不得不遍历返回MatchCollection。

相关问题