본문 바로가기

JAVA

[JAVA] 문자열이 영어로 되어있는지 판단하기(정규표현식)

문제설명

외로운 현우는 미소녀 연애 시뮬레이션 게임을 하려고 합니다. 다운로드를 끝내고 게임에 접속하니 아이디를 만들라는 창이 등장했습니다. 아이디는 영어로만 쓸 수 있고, 20글자를 넘어가면 안 됩니다. 현우가 정한 아이디의 생성 가능여부를 출력하세요.

입출력 예

입력 #1

abcdefghijklmnopqrstuvwxyz

입력 #2

ABC

입력값 설명

첫째 줄에 영어 소문자와 대문자로만 이루어진 아이디가 주어집니다. 입력되는 아이디의 길이는 100자를 넘어가지 않습니다.

출력 #1

I

출력 #2

P

출력값 설명

첫째 줄에 아이디의 생성여부를 출력합니다. 사용할 수 있는 아이디라면 P라고 출력하고, 사용할 수 없다면 I라고 출력합니다.

 


 

 

 

 

🥠 이 문제에서는 Pattern.matches() 메서드를 사용해줬다.

✔️ Pattern.matches()설명

 

  • Pattern.matches()는 Java에서 정규 표현식을 사용하여 문자열이 특정 패턴과 일치하는지 확인하는 정적 메서드입니다.
  • java.util.regex.Pattern 클래스에 속해 있습니다.
  • 전체 문자열이 주어진 정규 표현식과 일치해야 true를 반환합니다.

 

✔️ 기본 요소ㅡ문자 클래스

  • [abc]: a, b, c 중 하나
  • [^abc]: a, b, c를 제외한 문자
  • [a-zA-Z]: 모든 알파벳 (소문자 a-z, 대문자 A-Z)
  • [0-9]: 모든 숫자

 

✔️ 예를들어 간단하게 설명하자면

Pattern.matches("^[a-zA-Z]*$", name)
  • ^: 문자열의 시작
  • [a-zA-Z]: 모든 알파벳 문자 (대소문자 포함)
  • *: 0회 이상 반복
  • $: 문자열의 끝
  • 즉, "알파벳만으로 구성된 문자열(빈 문자열 포함)"을 검사합니다.

 

✔️  문자열에 대한 상세 정규식


정규식 패턴 설명
"^[a-z|A-Z]*$" 대소구분 없는 영문만 허용하는 정규식
"^[a-z]*$" 소문자만 허용하는 정규식
"^[A-Z]*$" 대문자만 허용하는 정규식
"^[ㄱ-ㅎ|가-힣]*$" 한글만 허용하는 정규식
"^[a-z|A-Z|ㄱ-ㅎ|가-힣]*$" 대소구분 없는 영문과 한글만 허용하는 정규식
"^[a-z|A-Z|ㄱ-ㅎ|가-힣| ]*$" 대소구분 없는 영문과 한글만 허용하는 정규식 (스페이스바 포함)
"^[0-9a-zA-Zㄱ-ㅎ가-힣]*$"; 대소구분 없는 영문과 한글만 허용하는 정규식
"^[0-9a-zA-Zㄱ-ㅎ가-힣 ]*$"; 대소구분 없는 영문과 한글, 숫자를 허용하는 정규식(스페이스바 포함)

 

 

 

 

 


 

🥠문제풀이

import문을 불러와 주고 

import java.util.regex.Pattern;

 

 

문자열에 숫자,특수문구 등 다른 언어가 포함되어 있으면 false를 반환한다

 

import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String name="string"
        System.out.println(Pattern.matches("^[a-zA-Z]*$", name));

        String fail_name= "this_is;fail";
        System.out.println(Pattern.matches("^[a-zA-Z]*$", fail_name));
    }

 

 


 

 

*참고
if 조건문 안에는 boolean 값도 사용 가능하다
두 조건이 모두 true일 때만 전체 조건이 true이다

 

 

참고

https://adjh54.tistory.com/104

반응형