2011-02-03 5 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을 foreach하여 모든 값을 가져 오려고합니다.

도움을 많이 받았습니다. 감사합니다. .

답변

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

장난 꾸러기를 의도하지 않았지만 이것은 정확히 내가 한 것입니다. 정말 빠른 응답을 해주셔서 감사합니다. –

1

당신은이 중 하나를 시도 할 수 있습니다 :

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

당신이 반환을 MatchCollection을 반복해야 할 것이다 그러나. 이 같은

관련 문제