2012-07-20 3 views
0

나는 Regex.IsMatch()을 사용하여 단어 목록을 평가합니다. 다음 문자열을 평가하는 경우 true을 반환해야Regex를 사용하여 문자열 평가

Regex : -hellotest -helloabc -abchello

다음과 같은 문자열을 평가하는 경우 Regex가 false를 반환해야합니다 -helloworld -worldtest - 단어 "hello"이 문자열에서 단어 "world" 경우 발견되면 abcworld 기본적으로

가 나는 true을 반환하려면 입니다.

그런 결과를 산출하는 Regex은 무엇입니까?

+2

왜 string.contains를 사용하지 않으 의해 계승되어 있지 않은 경우에만 일치, 일치? – BlackBear

답변

0

를 사용하여 표현

(?<!world.*)hello(?!.*world) 

(?<!prefix)pos 부정적인 lookaround이다. 이 prefix

pos(?!suffix)에 의해 preceeeded되지 않는 경우 pos은이 suffix

+1

@ user1295450 - 와우! 왜 그렇게 복잡한 대답이 가장 좋은 대답으로 받아 들여 졌습니까? 가변 길이 음수 lookbehind를 사용하면 최악의 성능 솔루션입니다. 그리고 두 부정적인 lookaround 데 악마 솔루션입니다 (미안 올리비에!) –

+0

성능이 문제가 있다면 왜 정규식을 사용합니까? Abe Miessler가 삭제 한 답변'myString.Contains ("hello") &&! myString.Contains ("world");는 아마 훨씬 빨라졌습니다. –

+0

OP가 정규 표현식을 요구하기 때문에 최상의 정규 표현식 솔루션을 제공해야합니다. –

관련 문제