2017-01-08 1 views
3

여기 내 문자열입니다.

참고 :이 두 단어 사이의test이라는 단어를 제외한 모든 단어가 될 수 있습니다.

그래서 this is a string과 일치 시키려고했으나 this is a test string이 아닙니다. 두 번째 단어에는 test이라는 단어가 포함되어 있기 때문입니다.

/this[^test]+string/gm 

But it doesn't work as expected

내가 그것을 어떻게 해결할 수 있습니다 : 여기


내 현재의 패턴이다? 당신이 정규식없이이 작업을 수행하려면

+0

'테스트'부분이 없습니다. 당신은 설명해 주시겠습니까 – mrid

+0

@mrid'this'로 시작하는 모든 문장을 일치시키고 싶습니다.'test'라는 단어가 문장에 포함되어 있지 않으면'string'으로 끝납니다. – Shafizadeh

+0

@mrid이 반대의 경우 https://regex101.com/r/ENHYLD/3 – Shafizadeh

답변

2

사용할 수 있습니다. 이렇게하는 방법은 negative lookarounds을 사용하는 것입니다. 정규식은 다음과 같습니다.

this((?!test).)*string

+0

'? (this? (?! test).) *? string'과 같이'?'을 추가하여'lazy'로 만들 필요가 있습니다. 당신의 정규식을 다음과 같이 테스트하십시오. 이것은 문자열입니다. 이것은 문자열입니다. 이것은 문자열입니다. 이것은 문자열입니다. 문자열입니다. ' – developer

-1

, 당신은 당신이 그것을했던 방법은 목록 "테스트"에서 모든 문자를 제외하고 fnmatch()

function match($str) 
{ 
    if (strpos($str, 'test') == false) /* doesn't contain test */ 
    { 
     if (fnmatch('this*string', $str)) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
    else 
     return false; 
} 
+0

는 downvote를 설명 할 수 있습니까? – mrid

관련 문제