2009-08-23 7 views
20

이 아닌 어떤 문자열도에 "DontMatchThis"문자열과 일치 시키려합니다.C# 특정 문자열을 포함하지 않는 문자열과 일치하는 정규식?

정규식이란 무엇입니까?

+0

왜 이것을 정규식과 함께하고 String.IndexOf를 사용하지 않습니까? –

+12

때로는 정규 표현식이 설정되어 있고 코드를 변경할 수 없기 때문에. 또는 다른 복잡한 정규 표현식의 서브 표현식으로 필요하기 때문입니다. 또는 여러 가지 이유 중 하나. 당신은 "왜 고양이에게 해석적인 춤의 매체를 통해 당신에게 텍스트를 마임시키지 않겠습니까?"라고 물을 수도 있습니다. 가끔은 네 고양이를 키울 필요가 없다. –

답변

45

이 시도 :

^(?!.*DontMatchThis).*$ 
+11

설명 좀 해주세요. 어떻게 작동합니까? – bikashg

+0

@bikashg : 여기를 참조하십시오 : http://stackoverflow.com/a/11125488/47190 –

11

정규식 특정 패턴을 포함하지 않는 문자열과 일치하는 당신의 인라인 버전입니다 (?s)없이 패턴을 (사용하는 경우

(?s)^(?!.*DontMatchThis).*$ 

한다 .이 개행 LF 기호 및 기타 모든 문자와 일치하도록 RegexOptions.Singleline 플래그를 설정하면 DontMatchThis은 첫 번째 행에서만 검색되며 LF 기호가없는 문자열 만와 일치합니다.

패턴 자세한 사항 :

  • (?s) - 문자열 앵커의 시작
  • (?!.*DontMatchThis) - -이 어떤 0 또는 경우 negative lookahead가 검사하는 DOTALL/만일 Singleline 수정은 . 일치하는 모든 문자
  • ^을 더 많은 문자 (욕심쟁이와 일치 .* 하위 패턴 - 참고 게으른어떤 0 개 이상의 문자, 가능한 한 많은 - (다음 서브 패턴의 경기 전에 가능한 한 적은 수의 문자와 일치) 0 버전은 작업) DontMatchThis은 문자열의 시작에 가까운 것으로 예상된다 빠른 경우 수행 DontMatchThis
  • .*에 따라 얻을 수 있습니다 최대
  • $ - 문자열의 끝 (앵커 문자 : 달러 ($) 참조).
+1

허용되는 답변에 추가하는 것이 좋습니다. – VMAtm

관련 문제