'regular expression split'에 해당되는 글 1건



안녕하세요. 제임스 입니다. 


이번 포스팅에서는 정규표현식을 이용한 split 함수를 이용 하는 방법에 대해 알아 보겠습니다. 



Java split 함수 관련 내용은 아래 포스팅을 참조 하세요.

2017/11/16 - [Java] - [ 자바 코딩 ] Java split() 함수로 문자열 자르기



■ 정규표현식으로 문자열 자르기 (split 함수 사용)



▶ 예제 1


1
String regExp = "\\Q|\\E";
cs


정규표현식을 위와 같이 작성하여 문자열 자르기를 위한 토큰 값으로 선언 했습니다. 


정규표현식에서 \Q 와 \E 는 한셋트로 사용되는 표현식으로 \Q 와 \E 사이의 문자를 의미 합니다. 

즉, 위 표현식의 경우 일반적으로 or 를 의미하는 " | " 를 토큰 값으로 선언 한 것입니다. 


사용 방법은 아래와 같습니다. 


1
2
3
4
5
6
String strInput = "james|tistory|regular|expression";
String[] retStr = strInput.split(regExp);
        
for(int i = 0; i < retStr.length; i++){
    System.out.println("retStr["+i+"] = "+retStr[i]);
}
cs


strInput 값에 " james | tistory | regular | expression " 이라는 변수값을 선언 했습니다. 

Sting 을 split 했을때 배열로 리턴 됩니다. (위 Java split() 함수 포스팅 참조)


결과 값을 확인하기 위해 for loop 를 돌려서 결과 값을 찍어 봤습니다. 


결과는 아래와 같습니다. 


Results

retStr[0] = james

retStr[1] = tistory

retStr[2] = regular

retStr[3] = expression




▶ 예제 2


1
String regExp = "\\s*[a-zA-Z]+";
cs


정규 표현식을 위와 같이 작성 해봤습니다. 

위 표현식은 공백문자가 0회 이상, 영문 대소문자 1회 이상인 것을 의미하는 표현식입니다. 


즉, 공백문자나 영문자가 오면 이것을 토큰으로 사용 하겠다는 의미로 작성한 표현식입니다. 


실제 예문을 보시겠습니다. 


1
2
3
4
5
6
7
8
String strTest = "a + b - c * d / e < f > g >= h <= i == j";
String[] retStr = strTest.split(regExp);
        
for (String out : retStr) {
    if (!"".equals(out)) {
        System.out.print(out);
    }
}
cs



strTest 라는 변수에 영문자, 공백문자 그리고 기타 비영문자들이 자리하고 있습니다. 

의도 한대로 표현식이 적용 된다면 공백문자 외 +, -, * 등등의 값들이 남아 있어야 합니다. 


위 코드 실행 결과는 아래와 같습니다. 


Results 

 + - * / < > >= <= ==


위 결과 값에서   는 공백문자를 의미 합니다. 


표현식에서는 조건을 공백문자(0회 이상) + 영문자(1회 이상 : 즉, 필수) 형태로 설정했기 때문에 결과가 위와 같이 나왔습니다. 


a + b - c * d / e < f > g >= h <= i == j


위 문자열에 마우스 커서를 가져가 보시면 좀더 편하게 이해 하실 수 있을 것 같습니다.

첫번째 a 를 제외 나머지 문자열들은 앞에 공백문자 + 영문자 형태로 되어 있습니다. 

결과적으로 나머지 영문자 뒤에 따라오는 공백문자 + 비영문문자의 조함이 남은 결과 값으로 리턴 되었습니다. 



최대한 쉽게 풀어 쓴다고 했는데 오히려 더 복잡해 진것 같은 느낌적인 느낌이 듭니다.


혹, 이해하기 어려운 부분이 있으신 경우 글 남겨 주시면 도움 드릴 수 있도록 하겠습니다. 





 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,