2011-09-05 2 views
2

나는 문자열에서 라인의 설정 :여러 줄로 된 C# 정규식에서 일치하는 내용이 포함 된 전체 줄을 어떻게 삭제합니까?

alksjdlaksj asdkjf 
askldjfak askdjfk 
ksdjfk **Bogus** alskdjfalksdj 
sadkljfal skdjfkd 

을하고 그들에 '가짜'로 라인을 삭제해야합니다. 사용할 수 있습니다.

Regex.Replace(result, @"^.*Bogus.*$", "", RegexOptions.Multiline); 

해당 줄을 찾아서 제거합니다. 그러나 빈 줄이 남습니다. 이 regex 문을 사용하여 빈 줄을 지울 수 있습니까?

+0

이'사용해보십시오 즉, 일반 String.Contains() 사용할 수 @ "..^* 가짜 * \ n 개의 $", " ", RegexOptions.Multiline);'나는 그것을 할 것이라고 믿는다. – Ben

답변

2

정규식을 non-multiline ...으로 지정하고 마지막에 줄 바꿈을 추가하여 일치 항목에 포함 시키십시오.

예 :

(^|\n).*Bogus.*\n? 
+0

나는 그것을 시도 할 것이다. \ r과 다른 종류의 줄 바꿈에 대해 걱정할 필요가 있습니까? – tofutim

+0

이것은 효과가 있습니다. (^ | \ n). * Bogus. * ($ | \ n) – tofutim

+1

모두가 다중 행 모드를 얻었습니까? '(? m) ^. * Bogus. * \ n *'나를 위해 잘 작동합니다. –

0

시나리오에 가능하다면, 당신은 단지

var result = string.Join(Environment.NewLine, sourceString.Split(Environment.NewLine) 
    .Where(line => !line.Contains("Bogus")).ToArray()); 
관련 문제