DBILITY

독거 가능성 100% 노후에 라면값이라도 하게 센스를 발휘합시다!😅
Please click on the ad so that I can pay for ramen in my old age!
点击一下广告,让老后吃个泡面钱吧!
老後にラーメン代だけでもするように広告を一回クリックしてください。

python regular expression ( 정규 표현식 ) 본문

python

python regular expression ( 정규 표현식 )

DBILITY 2021. 8. 20. 16:13
반응형

다른 언어를 사용하더라도 정규식은 언제나 헷갈리는 부분이다.

자주 사용하지 않으니 어쩌면 당연한 것일까?

 

w3school의 python tutorial을 보니

findall 문자 그대로 일치하는 모든 list를 반환, 없으면 맹탕~list 반환

search 문자열내에 일치하는 것이 있으면 해당 object 반환, 반대로 None이 반환되면 없다는 얘기.

split 제공된 문자를 기준으로 잘라서 list로 반환, 없다면 문자열을 list에 넣어 그대로 반환

sub 일치하는 모든 문자를 교체한다. 다른 언어의 replace와 같다.

 

다음은 1년에 한번 사용할까 말까 하고 정규식을 보자마자 정신이 혼미해질 때 눈으로 마시는 박카스A정도.

print(re.search('ab','abcd'))
<re.Match object; span=(0, 2), match='ab'>

print(re.search('abx','abcd'))
None

print(re.split('ab','abcdabef'))
['', 'cd', 'ef']

print(re.split('abx','abcdabef'))
['abcdabef']


print(re.sub('ab','hello','abcdabef'))
hellocdhelloef

print(re.sub('abx','hello','abcdabef'))
abcdabef

print(re.sub('\d','','Abcd20210820abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ'))
Abcdabef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ

print(re.sub('\D','','Abcd20210820abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ'))
20210820

print(re.findall('ab','abcd abef'))
['ab', 'ab']

print(re.findall('abx','abcd abef'))
[]

#ab로 끝나나?
print(re.findall('ab$','abcd abef^%$'))
[]

#^가 있나? Escape문자를 사용해야.
print(re.findall('\^','abcd abef^%$'))
['^']

#한글찾기도 된다
print(re.findall('[가-힣ㅎ]','abcd abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ'))
['동', '해', '물', '과', '백', '두', '산', '이', '마', '르', '고', '닳', '도', '록', 'ㅎ', 'ㅎ']

#숫자만
print(re.findall('[0-9]','abcd20210820abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ'))
['2', '0', '2', '1', '0', '8', '2', '0']

print(re.findall('\d','abcd20210820abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ'))
['2', '0', '2', '1', '0', '8', '2', '0']

print(re.findall('\d{8}','abcd20210820abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ'))
['20210820']

#숫자제외
print(re.findall('[^0-9]','abcd20210820abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ'))
['a', 'b', 'c', 'd', 'a', 'b', 'e', 'f', '^', '%', '$', '동', '해', '물', '과', ' ', '백', '두', '산', '이', ' ', '마', '르', '고', ' ', '닳', '도', '록', 'ㅎ', 'ㅎ']

print(re.findall('\D','abcd20210820abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ'))
['a', 'b', 'c', 'd', 'a', 'b', 'e', 'f', '^', '%', '$', '동', '해', '물', '과', ' ', '백', '두', '산', '이', ' ', '마', '르', '고', ' ', '닳', '도', '록', 'ㅎ', 'ㅎ']

#한글제외
print(re.findall('[^가-힣ㅎ]','abcd abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ'))
['a', 'b', 'c', 'd', ' ', 'a', 'b', 'e', 'f', '^', '%', '$', ' ', ' ', ' ']

print(re.findall('ㅎ+','abcd20210820abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ'))
['ㅎㅎ']

#대소문자 무시하고 싶을때 편한건 re.IGNORECASE
print(re.findall('ab','Abcd20210820abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ'))
['ab']

print(re.findall('[Aa]b','Abcd20210820abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ'))
['Ab', 'ab']

print(re.findall('ab','Abcd20210820abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ', re.IGNORECASE))
['Ab', 'ab']

print(re.findall('[A|a]b','Abcd20210820abef^%$동해물과 백두산이 마르고 닳도록ㅎㅎ'))
['Ab', 'ab']

#왠지 자신없는 이메일형식
re.findall('^[a-zA-Z_{1}][a-zA-Z0-9]+\@[a-z0-9]+\.[a-z.]+[a-z]$','hyperrookie1@gmail.com')
['hyperrookie1@gmail.com']

 

w3school을 참고하자

https://www.w3schools.com/python/python_regex.asp

 

Python RegEx

Python RegEx A RegEx, or Regular Expression, is a sequence of characters that forms a search pattern. RegEx can be used to check if a string contains the specified search pattern. RegEx Module Python has a built-in package called re, which can be used to w

www.w3schools.com

 

 

반응형
Comments