2013-03-10 6 views
-2

긴 문자열이있어서 규칙 기반으로 분할하고 싶습니다.자바에서 문자열을 분할하는 방법

[1] (dokuma) deve, öküz, at tüyü, keçi kılı veya koyun yününün sıkıştırılarak sertleştirilmesiyle imal edilen ve giyecek yapımında kullanılan kalın ve kaba kumaş [2] (giyim) kumaştan yapılan yakasız bol ve uzun üstlük [3] (halk ağzı) abla, anne [4] (halk ağzı) dar pantolon üzerine giyilen ceket 

와 같은 내가 보여주고 싶은 : 내 문자열 인

[1] (dokuma) deve, öküz, at tüyü, keçi kılı veya koyun yününün sıkıştırılarak sertleştirilmesiyle imal edilen ve giyecek yapımında kullanılan kalın ve kaba kumaş 
[2] (giyim) kumaştan yapılan yakasız bol ve uzun üstlük 
[3] (halk ağzı) abla, anne 
[4] (halk ağzı) dar pantolon üzerine giyilen ceket 

내 코드는 다음과 같습니다

String[] strMeaning = meanings.text().split("["); 
     for(String key : strMeaning) 
     { 
      System.out.println(key); 
     } 

내가 본 오류 것은 :

Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 0 
[ 
^ 
    at java.util.regex.Pattern.error(Unknown Source) 
    at java.util.regex.Pattern.clazz(Unknown Source) 
    at java.util.regex.Pattern.sequence(Unknown Source) 
    at java.util.regex.Pattern.expr(Unknown Source) 
    at java.util.regex.Pattern.compile(Unknown Source) 
    at java.util.regex.Pattern.<init>(Unknown Source) 
    at java.util.regex.Pattern.compile(Unknown Source) 
    at java.lang.String.split(Unknown Source) 
    at java.lang.String.split(Unknown Source) 
    at wikipedia.CreateXML.wordMeaning(CreateXML.java:39) 
    at wikipedia.CreateXML.prepareData(CreateXML.java:33) 
    at wikipedia.Main.main(Main.java:32) 

나는 알아낼 수 없었다. 내가 원하는 방식으로 어떻게 나눌 수 있습니까? 사전에 감사

답변

5

열기 대괄호 [character class의 시작을 나타 내기 위해 사용되는 특수 문자입니다, 당신은 그것을 탈출해야합니다

meanings.text().split("\\["); 
+0

"["을 (를) 가져올 때 필요한 출력이 제대로 생성되지 않습니다. –

1

당신은 탈출 할 필요가 이 대괄호는 정규식에서 특수 문자이므로 일치를 수행하는 데 사용됩니다. 그러나 자바에서 백 슬래시는 특별한 의미를 가지므로 이스케이프도 이스케이프 처리해야합니다. 당신은 내가 "["브래킷을 제거의 일치로 println에 여분의 비트를 추가

String[] strMeaning = meanings.text().split("\\["); 
    for(String key : strMeaning) 
    { 
     System.out.println("[" + key); 
    } 

와 끝까지.

3

[자바 정규식의 특수 문자입니다. 이 같은

시도 뭔가 : String[] strMeaning = meanings.text().split("\s(?=\[)"); :

String[] temp = text.split("\\["); 
+0

"["를 잡을 때 필요한 출력을 생성하지 않습니다. –

1

나는 다음을 사용하십시오. [을 분할하지 않고 다음 [ 앞에 오는 공간을 분할하려고합니다.

관련 문제