2012-01-30 6 views
1

패턴이 주어진 경우 S 문자열을 S.split(pattern)으로 여러 부분으로 분할 할 수 있습니다. 그러나 결과는 내가 원하는 것이 아닙니다. 패턴과 일치하는 문자열, 즉 구분 기호가 필요합니다. 내 생각은 분할 된 결과를 사용하여 새 패턴을 형성 한 다음 다시 분할하는 것이지만 다양한 메타 심볼의 경우를 고려해야합니다. 어떤 간단한 방법이라도? 자바 정규식에서Java 패턴 일치에서 구분 기호 가져 오기

+0

예제는 – Jayy

+0

예제를 제공해주십시오. – RanRag

+2

정규식에 'not'연산자가 있습니까? E.G. 의사 코드'S.split (! 패턴)' –

답변

3
+1

최신 버전의 JavaDocs에 링크하는 것이 가장 좋습니다. J2SE 7을 가리 키도록 답변을 편집했습니다. 최신 문서에 대한 링크를 얻는 방법은 [장점 2] (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7090875)를 참조하십시오. . –

+0

@AndrewThompson 귀하의 질문에 아래의 의견에 지적했다, 정규식 당신이 사용할 수있는'not' 연산자가 있습니다. – Dawood

+0

back-to-back 구분 기호가있는 문자열에서 잘못된 결과를 반환하기 때문에 not 연산자가 작동하지 않습니다. (IE는 공백으로 구분 된 문자열에서 한 행에 두 개의 공백이 있습니다.) –

2

당신은 단지 복수 스플릿을 실행할 수 없습니다 또는 잠재적으로 잘못된 결과를 얻을 수 있습니다. 아마 s.split (패턴, 2)를 사용합니다 ...

public static Vector<String> getDelims(String s, String pattern) 
{ 
    String[] items = s.split(pattern, 2); 
    if(items.length == 1) return new Vector<String>(); 
    String delim = s.substring(items[0].length()); 
    delim = delim.substring(0, delim.length() - items[1].length());  
    Vector<String> ret = getDelims(items[1], pattern); 
    ret.add(0, delim); 
    return ret; 
}