문제

"boon.ini" 및 "http"와 같은 단어가 나타나면 실패하는 표현식을 원합니다.목표는 이 표현식을 사용하여 모든 키워드 세트에 대해 구성할 수 있는 것입니다.

도움이 되었습니까?

해결책

^(?:(?!boon\.ini|http).)*$\r?\n?

(에서 가져옴 RegexBuddy의 라이브러리)은 boon.ini 및/또는 http를 포함하지 않는 모든 행과 일치합니다.그게 당신이 원한 건가요?

다른 팁

사용할 수 있는 대체 표현:

^(?!.*IgnoreMe).*$

^ = 줄의 시작을 나타냅니다.
$ =는 줄의 끝을 나타냅니다.
(?! Expression) =는 너비가 0임을 나타냅니다. 사전 예측 표현식에서 부정 일치를 나타냅니다.

그만큼 ^ 그렇지 않으면 평가할 때 부정적인 시선이 'IgnoreMe' 텍스트 내부/밖 어딘가에서 시작될 수 있으며 원하지 않는 곳에서도 일치하게 됩니다.

예를 들어정규식을 사용하는 경우:

(?!.*IgnoreMe).*$

"Hello IgnoreMe Please"를 입력하면 다음과 같은 결과가 나타납니다."gnoreMe Please"는 부정적 전망으로 'I' 뒤에 완전한 문자열 'IgnoreMe'가 없음을 찾습니다.

표현식 내에서 결과를 부정하는 대신 코드에서 이를 수행해야 합니다.그러면 표현이 꽤 단순해집니다.

\b(boon\.ini|http)\b

돌아올 것이다 true boon.ini 또는 http가 문자열의 아무 곳에나 있는 경우.httpd 또는 httpxyzzy와 같은 단어는 일치하지 않습니다. \b, 또는 단어 경계.원하는 경우 해당 항목을 제거하면 해당 항목도 일치합니다.더 많은 키워드를 추가하려면 파이프를 더 추가하면 됩니다.

\b(boon\.ini|http|foo|bar)\b

정규식을 작성하면 도움이 될 것입니다. 성공하다 찾고 있는 단어를 발견하면 조건을 반전시킵니다.

예를 들어, Perl에서는 다음을 사용합니다:

if (!/boon\.ini|http/) {
    # the string passed!
}
^[^£]*$

위의 표현식은 문자열에서 파운드 기호만 제한합니다.문자열을 제외한 모든 문자를 허용합니다.

어떤 언어/정규 표현식 라이브러리?ASP.NET에 관한 질문인 줄 알았는데, 이 경우 이 문서의 "부정적인 룩헤드" 섹션을 볼 수 있습니다.http://msdn.microsoft.com/en-us/library/ms972966.aspx

엄밀히 말하면 정규식의 부정은 여전히 ​​정규 언어를 정의하지만 이를 표현할 수 있는 라이브러리/언어/도구는 거의 없습니다.

부정적인 검색은 동일한 기능을 제공할 수 있지만 실제 구문은 사용 중인 항목에 따라 다릅니다.Tim의 대답은 다음과 같은 예입니다. (?...)

Google Analytics 프로필 필터의 비프로덕션 하위 도메인 URL을 제외하기 위해 이것을 사용했습니다(Tim Pietzcker 답변 기반).

^\w+-*\w*\.(?!(?:alpha(123)*\.|beta(123)*\.|preprod\.)domain\.com).*$

여기에서 컨텍스트를 볼 수 있습니다. 여러 단어를 제외하는 정규식

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top