2011-04-22 7 views

답변

2

사용 lookbehind 전에 내다 같은 후 :

편집
(?<=^|[^=])={2}[a-zA-z0-9 ]*={2}(?=$|[^=]) 

:이 솔루션은 작동 있지만, 그것은 효율적되지 않습니다 저스틴처럼.

+0

를 나타냅니다를 나타냅니다. 당신은 속도 때문에 승리합니다. @ridgerunner 사람들이 게시 한 몇 가지 다른 변형이 있다고 생각합니다. 나는 그들을 밖으로 시도 할 것이다. Lookahead 및 Lookbehind 운영자 아이디어에 감사드립니다. –

+0

좋은 스포츠맨 정신에 찬 환호, 그리고 당신의 대답이 여전히 맞기 때문에 +1. –

2

lookarounds에 대한 작업과 같습니다

(?<!=)==[a-zA-z0-9 ]*==(?!=) 

나는이 작업을 수행 할 수있는 가장 읽을 수있는 방법이 될 수 위 찾을 수 있습니다. 그들 사이

==(?<!={3})[a-zA-z0-9 ]*(?!={3})== 

이것은 또한 당신이 한 휴식 (모든 비 = 문자) 거기로, 같은 문자열에서 여러 번 일치 할 수 있습니다 : 당신은 또한 기본적으로 동일한 방식으로 작동합니다 다음을 사용할 수 있습니다 . 예를 들어 ==foo== ==bar==은 일치 항목 2 개를 생성해야하고 ==foo====bar==은 일치하지 않아야합니다.

+0

네,이 부정적인 해결책은 내 (열등한) 대답에 필요한 문자열 가장자리의 시작과 끝을 확인할 필요가 없습니다. 이 대답은 최고로 선택되어야합니다. +1 – ridgerunner

0
^={2}[a-zA-z0-9\s]+={2}$ 

\s 일치 공백
^는 시작 부분
$ 이것은 지금까지 너무 좋은 말

+0

문자 클래스로 [\ w \ s]를 사용할 수도 있습니다. – erisco

+1

@erisco :'\ w'는 로케일 설정에 따라 다른 문자도 포함합니다. 예를 들어, 프랑스어 로켈을 사용하는 경우 악센트 부호가있는 문자가 일치합니다 (원하지 않을 수도 있음) ... – ircmaxell

관련 문제