먼저, 발생할 수있는 모든 맞춤법/문법 오류는 유감스럽게 생각합니다. 나는 복잡한 정규 표현식 문제를 풀려고 노력하고 있지만 어떻게해야하는지 알 수는 없다. 특정 문자열 일부를 걸러 내려고합니다. 그러나 이것은 작동합니다! 선택적인 한 줄이 있는데 두 번째 줄, 이메일입니다. 어떻게하면이 부분이 선택적이며 정규 표현식이 문자열에 있는지 여부 만 검색해야한다고 말할 수 있습니다.Regex, 현재 문자열에있는 경우에만 일치
문자열
- [코멘트] 옹 [/127.0.0.1]
- [코멘트] 그림자 [/127.0.0.1]
- [코멘트] [메일] 폭시 [/127.0. 0.1]
- [COMMENT] [EMAIL2] PerfectAim [/127.0.0.1]
내가 무엇을 시도했다
Regex regexUserCommented = new Regex(
@"(\[COMMENT\])\ " + // COMMENT
@"(\[.*\]) " + // Email, this needs to be optional but how?!
@"(\w(?<!\d)[\w'-]*)" // User
);
if (regexUserCommented.IsMatch(test))
{
var infoMatches = regexUserCommented.Split(test);
Console.WriteLine(infoMatches[3]); // User
}
전자 메일 섹션을 선택적으로 만들 수있는 사람은 누구입니까? (정규 표현식에서 선택 사항으로, 문자열에 없다면 아무 일도하지 않아서 전자 메일 부분을 건너 뛸 수 있습니다. 내 나쁜 영어를 유감스럽게 생각합니다. :).
[을'?'정량 (http://msdn.microsoft.com/en-us/library/az24scfc.aspx#quantifiers) (경기 0 번 또는 1 번). 예를 들어,'(\ [. * \])? '. – rutter
@ "((\ [. * \]))) 해 보셨습니까?" –
@rutter 이것은 atm :)로 동작하지만, 어떻게'var infoMatches = regexUserCommented.Split (test);'의 결과에서 제외시킬 수 있습니까? 죄송합니다 모든 질문> :. –