https://school.programmers.co.kr/learn/courses/30/lessons/120864
문제 풀이
[Java] 자바 정규 표현식 (Pattern, Matcher) 사용법 & 예제 (tistory.com)
1) 정규 표현식(Regular Expression)
- 컴퓨터 과학의 정규언어로부터 유래한 것으로 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어
- 정규 표현식을 작성하는 방법은 자바 API java.util.regex 패키지를 사용해야 한다.
- java.util.regex 패키지 안에 있는 Pattern 클래스와 Matcher 클래스를 주로 사용한다.
2) Pattern 클래스
- 정규 표현식에 대상 문자열을 검증하는 기능은 java.util.reg.Pattern 클래스의 matches() 메소드를 활용하여 검증할 수 있다.
- matches() 메서드의 첫 번째 매개값은 정규표현식이고 두번째 매개값은 검증 대상 문자열이다.
- 검증 후 대상 문자열이 정규표현식과 일치하면 true, 그렇지 않다면 false 값을 리턴한다.
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String[] args) {
String pattern = "^[0-9]*$"; //숫자만
String val = "123456789"; //대상문자열
boolean regex = Pattern.matches(pattern, val);
System.out.println(regex);
}
}
3) Matcher 클래스
- Matcher 클래스는 대상 문자열의 패턴을 해석하고 주어진 패턴과 일치하는지 판별할 때 주로 사용된다.
- Matcher 클래스의 입력값으로는 CharSequence라는 새로운 인터페이스가 사용되는데 이를 통해 다양한 형태의 입력 데이터로부터 문자 단위의 매칭 기능을 지원 받을 수 있다.
- Mathcer 객체는 Pattern 객체의 matcher() 메소드를 호출하여 받아올 수 있다.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("^[a-zA-Z]*$"); //영문자만
String val = "abcdef"; //대상문자열
Matcher matcher = pattern.matcher(val);
System.out.println(matcher.find());
}
}
정답
import java.util.regex.*;
class Solution {
public int solution(String my_string) {
int answer = 0;
Pattern pattern = Pattern.compile("\\d+"); // 숫자 패턴
Matcher matcher = pattern.matcher(my_string);
while (matcher.find()) {
answer+=Integer.parseInt(matcher.group());
}
return answer;
}
}
다른 사람의 풀이
1)
class Solution {
public int solution(String my_string) {
int answer = 0;
String[] str = my_string.replaceAll("[a-zA-Z]", " ").split(" ");
for(String s : str){
if(!s.equals("")) answer += Integer.valueOf(s);
}
return answer;
}
}
2)
import java.util.StringTokenizer;
class Solution {
public int solution(String my_string) {
int answer = 0;
String s = my_string.replaceAll("[^0-9]", " ");
StringTokenizer st = new StringTokenizer(s, " ");
while (st.hasMoreTokens()) {
answer += Integer.parseInt(st.nextToken());
}
return answer;
}
}
'Java > 프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 - 삼각형의 완성 조건(2) (0) | 2024.05.10 |
---|---|
[JAVA] 프로그래머스 - 안전지대 (0) | 2024.05.10 |
[JAVA] 프로그래머스 - 다항식 더하기 (0) | 2024.05.10 |
[JAVA] 프로그래머스 - 최댓값 만들기(2) (0) | 2024.05.09 |
[JAVA] 프로그래머스 - 캐릭터의 좌표 (0) | 2024.05.09 |