본문 바로가기
Java & Spring

Java 정규표현식 - 2. 문자열에서 숫자 등 추출하기

by softserve 2021. 10. 25.
반응형

 

String s = "a1b2c3d4e5f6";
		
String[] a = new String[3];

a[0] = s.replaceAll("[0-9]",""); // 모든 숫자를 "" 로 변경 후 문자열을 반환
a[1] = s.replaceFirst("[0-9]",""); // 처음 나오는 숫자를 ""로 변경 후 문자열을 반환
a[2] = Boolean.toString(s.matches("[a-z]")); // 문자만 존재할 때 true 반환

String[] ar = s.split("[0-9]"); // 숫자를 구분자로 문자열을 분리하여 String[]로 반환
		
for(String ss : a) {
	System.out.println(ss);
}
for(String sss : ar) {
	System.out.print(sss+" ");
}
  • matches()는 주어진 regex 와 해당 문자열이 정확히 일치할 때만 true를 반환합니다.
  • replace 메소드들은 s를 직접 조작하지 않고 치환된 문자열을 반환합니다.
  • replace()는 char 문자를 치환하며 replaceFirst는 첫번째로 매치되는 문자만을, replaceAll은 모든 매치되는 문자를 치환합니다.
  • split("구분자", limit) 는 limit 만큼만 문자열을 분리합니다.

<실행결과>

abcdef
ab2c3d4e5f6
false
a b c d e f 

 

cbcbcb181818 에서 숫자만을 뽑아내려면 다음과 같이 하면 됩니다.

 

String s = "cbcbcb181818";

String s1 = s.replaceAll("[a-zA-Z]", "");

String s2 = s.replaceAll("\\D", "");

String s3 = s.replaceAll("[^0-9]", "");

System.out.println(s1+s2+s3);

 

 

181818181818181818
반응형

댓글