2014-12-18 2 views
1

나는regex가 다른 일치를 찾는 방법?

one two three four five six seven 

내가 정규식이 서로 가까이있는 두 단어를 일치시킬 문자열을, 그래서 나는 일치하는 다음 정규식

\w+ \w+ 

를 사용

one two 
three four 
five six 

무엇 다음 정규식을 얻기 위해 정규식을 사용해야합니까? :

two three 
four five 
six seven 
+0

왜 잘못에'하나 two'? –

+0

사용자가 선택한 언어로 정규식 검색 기능을 직접 구현해야합니다 (즉, 첫 번째 일치 항목을 "1 2"로 찾은 다음 첫 번째 일치 항목의 위치 뒤에있는 문자로 시작하는 표현식을 다시 평가해야 함). 이것은 정규 표현식이 왼쪽에서 오른쪽으로 탐욕스럽게 매치하기 때문입니다. 원래는 겹치는 일치를 가질 수 없습니다. – Sam

+1

@Sam : 주요 일치 항목과 겹치는 일치 항목을 가질 수는 없지만 그룹을 캡처 할 때는 항상 가능합니다. – nhahtdh

답변

2

정규식 엔진이 지원하는 경우 네가티브 lookbehind를 사용할 수 있습니다. 루비

예를 들어
(?<=)\w+ \w+ 

:

irb(main):001:0> 'one two three four five six seven'.scan /(?<=)\w+ \w+/ 
=> ["two three", "four five", "six seven"] 
관련 문제