2013-02-18 2 views
0

간단한 질문이 있습니다. 특정 단어와 교차하지 않는 하나 이상의 문자 (시작 및 끝 구문)를 선택하고 싶습니다.특정 단어와 교차하지 않는 하나 이상의 문자를 선택하는 방법

예 : 다음 텍스트에서 1234, efghijabcklmn을 선택하겠습니다.

String now = "abcd"; 
String next = "1234abcdefghijabcklmn"; 

난 [^ A] [^ B] [^ C] [^ D] 아무것도 작동되지^ABCD^(ABCD)를 시도했다. 나는 이것이 나누기와 토큰 화로 이루어질 수 있음을 안다. 하지만 난 정규식을 통해 그것을 원한다.

답변

3

나는 분할 및 토큰 화를 통해이 작업을 수행 할 수 있음을 알고 있습니다. 하지만 나는 그것을 정규식을 통해 싶어요.

음, String#split(regex)은 매개 변수로 regex을 취합니다. 따라서,이 문제가 의 균열의 이상적인 후보 인 경우, 그것을 사용하지 않는 것이 좋습니다.

단지 ABCD를 분할
String now = "abcd"; 
String next = "1234abcdefghijabcklmn"; 

System.out.println(Arrays.toString(next.split(Pattern.quote(now)))); 
+0

100 % 동의! 작업을 완료하는 데 사용할 수 있습니다. 하지만 그것을 수행하는 정규 표현식을 작성하는 법을 배우고 싶습니다. 제 목적은 그것을 나누는 결과를 얻는 것이 아닙니다. 하지만 나는 그것을 정규식에서 작성하는 법을 배우고 싶다. 우리가 정규식에서 일치하는 단어를 선택할 수 있다면. 그 반대도 마찬가지야? – namalfernandolk

+2

@ NamalFernando. 아니,이 같은 정규식을 사용할 수있는 방법이 없습니다. 일련의 문자를 건너 뛸 수 없습니다. 가장 좋은 방법은'(. *?) abcd (. *)'와 같은 패턴을 사용하고 그룹 1과 그룹 2를 다시 얻는 것입니다. –

+0

확인. 고맙습니다. – namalfernandolk

2

...

System.out.println(Arrays.toString("1234abcdefghijabcklmn".split("abcd"))); 
+0

100 % 동의! 작업을 완료하는 데 사용할 수 있습니다. 하지만 그것을 수행하는 정규 표현식을 작성하는 법을 배우고 싶습니다. 제 목적은 그것을 나누는 결과를 얻는 것이 아닙니다. 하지만 나는 그것을 정규식에서 작성하는 법을 배우고 싶다. 우리가 정규식에서 일치하는 단어를 선택할 수 있다면. 그 반대도 마찬가지야? – namalfernandolk

관련 문제