안녕하세요. 제임스 입니다.
이번 포스팅에서는 정규표현식을 이용한 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
'Java' 카테고리의 다른 글
[ 자바 코딩 ] Java split() 함수로 문자열 자르기 (2282) | 2021.06.10 |
---|---|
[ 자바 코딩 ] java substring 으로 문자열 자르기 (3343) | 2021.06.10 |
[ 자바 코딩 ] Java Regular Expression 정규표현식 - 로또 번호 패턴 만들기 (1220) | 2018.07.02 |
[ 자바 코딩 ] Java Regular Expression 정규표현식 - 주민등록번호 패턴 만들기 (1549) | 2018.06.29 |
[ 자바 코딩 ] Java Regular Expression 정규표현식 - IP 주소 패턴 (1182) | 2018.06.28 |