2008-10-17 2 views
2

내가하고 싶은 것은 중간에 구두점이 있어도 바로 옆에 중복 된 단어가 있는지 확인하는 것입니다. 예를 들어구두점이있는 반복 단어를위한 정규식

:

Vivamus Vivamus diam, diam, Vivamus Vivamus diam, diam Vivamus 

여기에 4 개 별개의 히트 곡이 있어야합니다.

이것이 작동하지 않는 이유를 알 수 없습니다. 누군가가 이유를 설명하고 올바른 코드가 무엇인지 보여 줄 수 있습니까?

감사합니다.

(\w*(?:[ ,\.])*?)\1 

추신 : 혼란이 야기 때문에, 나는 펄 엔진을 사용하고 말을하지 않을거야.

답변

8

(?:은 캡처하지 않는 괄호이며 일치하는 내용을 저장하지 않습니다. 캡처 괄호를 사용해야합니다.

(\w+)\W+\1 
+0

NNNEEeeeeAAAAAAAHhhhhhhhhh .....하지 WORD는, 어떤 점에서 공백으로 .appended !!!! 그게 다야! 감사합니다. – Keng

0

원래 표현은 문장 부호에 대한 별도의 캡처를 만들지 않습니다,하지만 첫 번째 캡처 캡처 구두점을 포함 않습니다. 즉, 같은 것들을 발견 할 의미

diam, diam, really, really, twice. 

을하지만 당신은 문장 부호에 정말 관심이없는, 그래서 tj111의 솔루션 심지어는 '(?) 인 비 캡처 괄호를'하지만, 제대로 작동 설명은 다소이다 ... 불완전한가? 인용 된 주석은 정확하지만 전체 정규식이 실패한 것은 아닙니다.

1

[[\w|\W]+ ]+ 나를 위해 일했습니다. 고장 :

\w : 단어 문자

\W : 단어가 아닌 문자

[\w|\W]+ : 각 문자 단어 또는 단어가 아닌 문자가 1 번 이상

[[\w|\W]+ ]+을 반복 할 수있다 .. 모든 발생 1 회 이상