문제
- 패턴은 알파벳 소문자 여러 개와 별표(*)로 이루어진 문자열이다.
- 파일 이름이 패턴에 일치하려면, 패턴에 있는 별표를 알파벳 소문자로 이루어진 임의의 문자열로 변환해 파일 이름과 같게 만들 수 있어야 한다. 별표는 빈 문자열로 바꿀 수도 있다.
- 예를 들어, 'abcd', 'ad', 'anestonestod'은 모두 'a*d'와 일치한다.
- 패턴과 파일 이름이 모두 주어졌을 때 각각의 파일 이름이 패턴과 일치하는지 아닌지 구하기
- 1 <= N <= 100
풀이
- 1) * 는 빈 문자열을 포함해 임의의 문자열로 변환할 수 있다.
re 패키지에서 이를 [a-zA-Z]* 라고 표기할 수 있으므로, 변환한다.
- 2) 완전히 매치되는지 확인하려면 `match`가 아니라 `fullmatch`를 사용해야 한다.
예를 들어, 아래와 같은 예시에 `match`를 사용하면 DA가 나온다.
1
dd
ddd
import re
N = int(input())
pattern = input()
# *을 re에서의 의미로 변경
pattern = re.sub('\*', '[a-zA-Z]*', pattern)
for _ in range(N) :
file = input()
# 매치되는지 확인
print("DA") if re.fullmatch(pattern, file) else print("NE")
References