2012-11-28 6 views
18

String.split()과 함께 작동하여 문자열을 인접한 문자로 끊는 정규식이 있습니까? 즉, 다음 문자가 이전 문자와 다른 경우? 여기 연속 된 문자의 문자열을 추출하기 위해 스플릿을

테스트 사건 :

String regex = "your answer here"; 
    String[] parts = "aaabbcddeee".split(regex); 
    System.out.println(Arrays.toString(parts)); 

예상 출력 : 테스트 케이스만을 입력으로 문자를 갖고

[aaa, bb, c, dd, eee] 

있지만,이 명료 만; 입력 문자는 문자 일 수 있습니다.


루프 또는 다른 기술과 관련된 "해결 방법"을 제공하지 마십시오.

질문은 위와 같이 코드에 맞는 정규식을 찾는 것입니다. 즉 split()만을 사용하고 다른 메소드 호출은 사용하지 않는 것이 좋습니다. "일을 할"코드를 찾는 것에 대한 질문이 아닙니다.

답변

23

하나의 단계에서 분할에 대한 정규식을 작성하는 완전히 가능하다 :

"(?<=(.))(?!\\1)" 

당신이 동일한 문자의 모든 그룹 사이에 분할하려는 때문에, 우리는 단지 두 그룹 사이의 경계를 찾을 필요가있다. 이전 캐릭터를 잡기 위해 긍정적 인 룩백을 사용하고 음의 룩어 헤드 및 백 - 레퍼런스를 사용하여 다음 캐릭터가 동일한 캐릭터가 아닌지 확인합니다.

본 그림에서 알 수 있듯이 정규식의 길이는 0입니다 (어썰트를 두 번 둘러보십시오). 정규 표현식에서 문자를 사용하지 않습니다.

+2

+1 [성공] (http://ideone.com/BFRhjZ). – nickb

+1

+1 좋은 소식, 앞으로이 점에 유의하겠습니다. – arshajii

+0

오, 멋지다! :) +1 +1 – Amadan

관련 문제