Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Sqoop
- SPC
- GIT
- 공정능력
- vaadin
- NPM
- Android
- plugin
- mybatis
- IntelliJ
- SQL
- JavaScript
- Spring
- tomcat
- mapreduce
- xPlatform
- Eclipse
- window
- R
- es6
- hadoop
- Python
- table
- react
- 보조정렬
- Express
- Java
- Kotlin
- MSSQL
- SSL
Archives
- Today
- Total
DBILITY
python regular expression ( 정규 표현식 ) 본문
반응형
다른 언어를 사용하더라도 정규식은 언제나 헷갈리는 부분이다.
자주 사용하지 않으니 어쩌면 당연한 것일까?
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' 카테고리의 다른 글
python matplot bar chart example (0) | 2021.08.27 |
---|---|
python matplot line chart example (0) | 2021.08.25 |
python 메일보내기 (0) | 2021.08.19 |
python 사진 이미지 다루기(image open, resize) (0) | 2021.08.19 |
python requests 헤더(header), 쿠키(cookie) 추가하기 (0) | 2021.08.19 |
Comments