2016-08-13 1 views
0

예를 들어 'test'와 일치하지 않으려 고합니다. 나는 [^ t] [^ e] [^ s] [^ t]을 (를) 시험해 보았습니다. 일치하지 않지만 적어도 하나의 문자가 같은 위치의 음표와 일치하면 일치하지 않습니다.posix 정규 표현식이 단어와 일치하지 않습니다.

이 문제를 해결하는 방법에 대해 알고 싶습니다.

참고로 POSIX 버전의 정규 표현식입니다. 미리보기 또는 look-behidnd가 없습니다.

또한 명확히하기 위해 원하는 단어는 특정 문자 (예 : "sdkfjdlskj"문자열) 사이에 있습니다. '<'사이의 모든 것을 찾고 있습니다. 전자 메일 부분은 쉽지만 특정 단어와 일치하지 않는 것은 꽤 불안합니다.

+0

POSIX는 lookaheads 또는 언급 한 바와 같이 lookbehinds –

+0

을 지원하지 않습니다,이 POSIX 버전, 아니 봐 이것은 미리/ –

+0

가 [** POSIX 기본입니다 비하인드입니다 정규 표현식 **] (** http://www.regular-expressions.info/posix.html) 또는 ** POSIX 확장 정규 표현식 **? – Armali

답변

2

일반적인 길 찾기는 단어의 각 위치에 테스트를 배치하는 것입니다.

Compressed

([^t]+|(t([^e]|$)|te([^s]|$)|tes([^t]|$)))+

Formatted

(       # (1 start) 
     [^t]+ 
    | 
     (       # (2 start) 
      t 
      ([^e] | $)    # (3) 
     | te 
      ([^s] | $)    # (4) 
     | tes 
      ([^t] | $)    # (5) 
    )       # (2 end) 
)+       # (1 end) 
+0

패턴의 시작 부분 근처에서 편집 한 결과 실수로 유해한'([. – Armali

+0

@Armali - 실제로 _Compressed_의 오타가 수정되었습니다. – sln