2013-02-20 1 views
0

나는 PCRE를 사용하여 구에서 모든 단어 쌍을 찾습니다. 문구는 "빠른 갈색 여우가 게으른 개를 뛰어 넘었다." 생성해야합니다정규 표현식 : 한 쌍의 텍스트에있는 모든 단어를 가져갈 수 있습니까?

The quick 
quick brown 
brown fox 
fox jumped 
jumped over 
... 
... 
lazy dog 

두 단어를 모두 소모하는 FindAndConsume() 함수를 사용하고 있는데 결과가 절반 밖에되지 않습니다!

The quick 
brown fox 
jumped over 
... 
... 
the lazy 

그래서 모든 단어 쌍을 검색 할 수있는 방법이 있는지 찾으려고합니다.

+0

저는 펄 개발자가 아니지만 '\ b \ w +? \ W + \ w +? \ b' 패턴을 사용하여 PHP에서이 작업을 수행 할 수 있지만이 작업은 불완전하다고 생각합니다 –

+0

@ExplosionPills : 아니요, 당신 캔트. 당신은 OP와 같은 결과를 얻을 것이다. – Amadan

+0

@Amadan 아 사실, 나는 오해했다 –

답변

1

정규식은 겹치는 일치 항목을 찾지 않습니다. 당신이하고 싶은 것을하기 위해, 당신은 먼저 단어로 단어를 나눈 다음, 이웃들과 함께 항목을 추출하기 위해 정상적인 루프를 사용하는 것이 좋습니다.

두 번째 단어를 미리보기에 정규 표현식에 넣고 캡처 할 수 있습니다 ((\w+)(?=\W+(\w+)\b)).하지만 일치 항목이 아니라 첫 번째 단어 만 포함되므로 캡처가 아닌 일치 항목을 가져와야합니다.

+0

잘 했어. 감사 ! 나는 또 다른 해결책을 발견했다. (위대한 것은 아니다.) 내가 한 것처럼 스캐닝을 한 후, 어구의 첫 단어를 지우고 다시 스캔한다. 단어 쌍의 나머지 절반을 얻는다 ;-) – Wartin