import re

#----------------------------------------------------------------------
#[ ,:] 로 자르고 [ ,:] 빼고 반환
find_string = 'hello, world, song! he:e??'
target_string = '[.|,|!|?|s|:| ]'
result_string = re.split(target_string, find_string)    
print(result_string)


#----------------------------------------------------------------------
#특정 단어 찾기
find_string = 'ababababa'
target_string = 'aba'
regex = re.compile(f'({target_string})')
result_string = regex.findall(find_string)
print(result_string)


#----------------------------------------------------------------------
#특정 단어 치환 
find_string = "(hello) 1213 (song+hee) 0121"
target_string = "[(\.+)]"
regex = re.compile(target_string)
result_string = regex.sub(" ", find_string)                     #공백치환
print("치환 방법1",result_string)

result_string2 = re.compile("[(\.+)]").sub(" ", find_string)   #한번에 쓰기
print("치환 방법2",result_string2)

result_string3 = re.sub("[(\.+)]", " ", find_string)           #re.sub(정규 표현식, 대상 문자열 , 치환 문자)
print("치환 방법3",result_string3)                          


#----------------------------------------------------------------------
#매칭된 그룹 가지고 와서 치환
#\\1은 1번으로 매칭된 그룹을 가져오는 것
find_string = "zepelepenapa papapripikapa"
regex = re.compile("(a|e|i|o|u)p(a|e|i|o|u)");
print("매칭그룹 치환", re.sub(regex, "\\1", find_string))


#----------------------------------------------------------------------
#문자열의 처음부터 정규식과 매치되는지 조사하고 맞으면 해당 문자열 반환
find_string = "python"
regex = re.compile(find_string)
result_string = regex.match( 'python temp')
if result_string:
    print('매칭: ', result_string.group())
else:
    print('매칭 없음')


#----------------------------------------------------------------------
#문자열의 전체에서 정규식과 매치되는지 조사하고 맞으면 해당 문자열 반환
find_string = "python"
regex = re.compile(find_string)
result_string = regex.search( 'asdasd python asdsd python')
if result_string:
    print('매칭: ', result_string.group())
else:
    print('매칭 없음')    



#대문자 or 숫자 or - and FBI and 대문자 or 숫자 or 찾기
regex = re.compile("[A-Z0-9\-]*FBI[A-Z0-9\-]*")

#p앞뒤로 a e i o u 매칭 찾기
regex = re.compile("(a|e|i|o|u)p(a|e|i|o|u)");

#A, a, E, e, I, i, O, o, U, u
regex = re.compile("[AaEeIiOoUu]")

#시작도 숫자 끝도 숫자 모두 숫자로만 구성돼있는지 확인
regex = re.compile("^([0-9]*)$")

#대소문자 구분 없이 니모(Nemo) 찾기
regex = re.compile("([nN][eE][mM][oO])")




#
phone_number =["01033334444", "**4444", "027778888", "**8888"]

def solution(phone_number):
    num = len(phone_number)-4
    replace_txt = phone_number[:num]
    replace_number = re.sub('[0-9]', '', replace_txt)
    answer = replace_number + phone_number[-4:]
    return answer

def hide_numbers(s):
    return ""(len(s)-4) + s[-4:]

solution(phone_number)
문자열_정규식_정규식패턴