2013-11-03 5 views
2

나는 [text other text] 형식으로 표시된 태그를 포함하는 텍스트를 가지고 있습니다.String.split을 사용하여 대괄호 사이의 텍스트를 추출하는 방법

내가 구분 기호로 대괄호를 사용하여 문자열을 분할하고 싶습니다

하지만,이 :

String.split("\\[|\\]"); 

이 예상되는 결과를 제공하지 않습니다.

어떻게하면됩니까? 아래에 언급 한 바와 같이

+0

예상되는 결과 중 어느 것을 입력 했습니까? 어떤 결과가 나타 납니까? – SJuan76

+0

귀하의 의견도 강력하게 공유하십시오. –

+0

[대괄호 사이의 값]에 관심이 있다면 regex와 그룹 매처를 사용하는 것이 더 낫습니다. – l3dx

답변

7

내가 하나가 split()하여이 작업을 수행 할 수 있는지 확실하지 않습니다, Pattern.quote를 ("당신의 패턴이 간다")를 사용할 수 있습니다.

public static void main(String[] args) { 
    String line = "xx [text other text], [jili u babusi dva veselikh gusya], " + 
     "[a granny there was having two gay gooses] zz"; 

    Matcher matcher = Pattern.compile("\\[([^\\]]+)").matcher(line); 

    List<String> tags = new ArrayList<>(); 

    int pos = -1; 
    while (matcher.find(pos+1)){ 
     pos = matcher.start(); 
     tags.add(matcher.group(1)); 
    } 

    System.out.println(tags); 
} 
1

당신은

str.split(Pattern.quote("[")); 
-1

당신이 분할 방법을 사용하고 배열

문자열에 대한 답을 넣을 수 있습니다 : 당신의 패턴 패턴을 발견하고 [^\\]]+ ("모든 기호 닫기 괄호까지")이 꽤 솔직하다 [] d = s.split ("(\\ [) | (\\))");

+1

코드를 설명하고 이유를 밝히지 않고 코드를 설명하려고 시도하십시오. –

0

나는 정규식 사용하는 것보다 더 간단한 무언가가,이는하지만 (내가 그랬던 것처럼) 여기에 토지 같은/비슷한 질문을 가진 사람 4 년 전에 질문을 받았다 알고 : 당신의 예에서

String result = StringUtils.substringBetween(str, "[", "]"); 

가 , result은 "텍스트 기타 텍스트"로 반환되며, 필요한 경우 StringUtils.split()을 사용하여 추가로 나눌 수 있습니다. 다양한 종류의 (비교적 간단한) 문자열 조작을 위해 StringUtils 라이브러리를 권장합니다. 자동으로 null 입력과 같은 것을 처리하므로 편리 할 수 ​​있습니다. substringBetween위한

문서() https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#substringBetween-java.lang.String-java.lang.String-java.lang.String-

가 개폐 분리가 동일한 지 여부에 따라,이 함수의 두 버전이 있고, 구분자 (들) (들)의 발생 여부 대상 문자열을 여러 번

관련 문제