WORD [COLUMN] %Anything goes%
기본적으로 "WORD", "COLUMN"및 두 "%"문자 사이의 값을 추출해야합니다.
WORD [COLUMN] %Anything goes%
기본적으로 "WORD", "COLUMN"및 두 "%"문자 사이의 값을 추출해야합니다.
다음 정규식은 각 값을 명명 된 그룹으로 추출합니다.
Word = "WORD"
Column = "COLUMN"
Anything = "Anything goes"
이 정규 표현식을 실행하고 값을 얻을, 다음 (하지 않는 같은 것을 할 수 있습니다하려면 : 당신에게 다음 캡처를 제공해야합니다 샘플 문자열이 사용
(?<Word>(.*))(\s*)\[(?<Column>(.*))\]\s*%(?<Anything>(.*))%
모범 사례로서, 단지 몇 가지 기본 개념을 설명하는 것입니다.)
Regex regex = new Regex(@"(?<Word>(.*))(\s*)\[(?<Column>(.*))\]\s*%(?<Anything>(.*))%");
Match match = regex.Match("WORD [COLUMN] %Anything goes%");
Console.WriteLine(match.Groups["Word"].Value);
Console.WriteLine(match.Groups["Column"].Value);
Console.WriteLine(match.Groups["Anything"].Value);
이렇게하면 그룹 캡처가 콘솔에 출력됩니다. C#의 정규 표현식에 대한 자세한 내용은 Regex
에 대한 MSDN 설명서를 확인하십시오 (이 경우 다른 유형도 나타날 수 있음). 또한 정규식을 작성하고 분석하는 데 도움이되는 도구로 Expresso을 사용하는 것이 좋습니다. Expresso는 코드 방출 및 기타 다양한 유용한 기능을 지원합니다.
당신은 최고입니다! –
이 첫 번째 부분은'(?
@ 짐 : 내가 수행 한 모든 테스트에서 효과가 있습니다. 캡처는 욕심이 없습니다. 그러나 캡쳐가 제대로 작동하지 않는 것으로 판단되면 조정할 여지가 있습니다. –
이와 비슷한? 최초의 우주까지
먼저 잡아 모든 다음과 [과], 마지막으로 잡아 모든 사이의 모든 것을 잡아 %의
([^ ]*) \[([^\]])\] %(.*)%
COLUMN은 단지 한 문자 만 필요하기 때문에 작동하지 않을 것입니다 ('[^ \]] + '이 필요합니다.) 또한 마지막 부분은'% [^ %] * %'이어야합니다. 그는 "anything goes"안에 내장 된'% '문자를 허용합니다. –
([A-Z]+) \[([A-Z]+)\] %(.*)%
단어와 패턴이 모두 대문자 인 경우.
WORD와 PATTERN은 항상 대문자입니까? –