2013-07-07 2 views
2

lowercharacter합니다 : Twitter Hashtag Is Very COMPLICATED정규식은 대문자로 문자열을 분할하고 내가 좋아하는 분할하려고

내가 그렇게 정규식을 사용할 수 있습니다처럼 splited 후 TwitterHashtagIsVeryCOMPLICATED

문자열?

모든 조언을 주셔서 감사합니다.

str.split("(?<=[a-z])(?=[A-Z])") 

아이디어는 소문자를위한 길이 제로의 lookbehind을 사용하는 것입니다, 그리고 대문자 제로 길이 내다 :

+2

를? –

+0

가능한 복제본 [RegEx에서 CamelCase 또는 TitleCase (고급) 분할] (http://stackoverflow.com/q/7593969/1578604). – Jerry

답변

5

이 작동합니다. 이 구문은 낙타의 경우 단어 줄 바꿈에서만 일치합니다.

여기는 demo on ideone입니다.

+0

ASCII에 대한 완벽한 솔루션;) 트위터를 많이 알지는 못한다. 트위터의 "id"에 ASCII 문자 이외의 다른 것들을 사용할 수 있습니까? – fge

+0

@ dasblinkenlight 대단히 감사합니다. 데모와 함께 매우 직관적입니다. –

1

편집강하게은 dasblinkenlight의 대답에서 영감을 받았습니다 (+1). 난 단지 유니 코드 지원을 위해 여기에 유니 코드 범주로 변경

String test = "TwitterHashtagIsVeryCOMPLICATED"; 
for (String splitted: test.split("(?<=\\p{Ll})(?=\\p{Lu})")) { 
    System.out.println(splitted); 
} 

출력 : 당신은 당신이 시도 할 수있는

Twitter 
Hashtag 
Is 
Very 
COMPLICATED 
+0

감사합니다 @ 메나, 작동 –

+1

@HoaVu 오신 것을 환영합니다. fge가 언급했듯이 유니 코드 문자가 해시 태그에서 완전히 지원되는지 여부는 확실하지 않습니다. 그렇다면 소문자/대문자 ASCII 문자 클래스 대신 유니 코드 범주를 사용하는 것이 좋습니다. – Mena

+0

감사합니다. 정규식을 배울 수있는 문서와 그것을 테스트 할 수있는 도구를 말해 주시겠습니까? 그래서 여기에 너무 많이 게시하는 대신 자신을 통해 정규식을 마스터 할 수 있습니다. –