정규표현식
문자열을 처리할 때 특정 패턴으로 문자열 처리하는 방법
정규표현식 함수
- match : 가장 앞에서부터 일치하는 패턴 찾기
- search : 문자열에서 일치하는 가장 첫번째 패턴 찾기
- findall : 문자열에서 일치하는 모든 패턴 찾기
- split : 문자열에서 특정 패턴으로 나누기
- sub : 특정패텬에 맞는 문자열 대체하기
pattern
문자
\d
: 숫자 (\D: 숫자 외)\w
: 숫자, 문자, _ (\W : 문자, 숫자, _ 외)\s
: 공백문자 (\S : 공백문자 외)
지정자
[]
: 문자 묶음-
: 범위.
: 하나 문자?
: 0~1회*
: 0회 이상+
: 1회 이상{m}
:m회(m, n)
: m~nghl()
: 그룹핑
Q. 카드 번호 찾기
comment = "저의 카드 번호는 1234-2331-1123-9485와 7384 1234 5432 1222와 73841234-5432 1222 입니다."
import re
pattern = "([0-9]{4})[- ]?([0-9]{4})[- ]?([0-9]{4})[- ]?([0-9]{4})"
# print(re.findall(pattern, comment))
re.sub(pattern, "\g<1>-\g<2>-\g<3>-****", comment)
Q. 숫자로 바꾸기
s = "안녕하세요, 저의 전화번호는 영일공-48구삼삼7이사 그리고 010사팔구삼삼구삼일 입니다. 둘중에 하나로 연락하세요"
import re
p = "[0-9영공일이둘삼셋사넷오육칠팔구빵oO]{3}[- ]?[0-9영공일이둘삼셋사넷오육칠팔구빵oO]{3,4}[- ]?[0-9영공일이둘삼셋사넷오육칠팔구빵oO]{4}"
dic = {
"영":0, "공":0, "일":1, "이":2, "둘":2, "삼":3, "셋":3, "사":4, "넷":4, "오":5, "육":6, "칠":7, "팔":8, "구":9, "빵":0, "o":0, "O":0,
}
numbers = re.findall(p, s)
result = []
for num in numbers:
for key, value in dic.items():
num = num.replace(key, str(value))
num = num.replace("-", "")
result.append(num)
result
'PYTHON > Basic' 카테고리의 다른 글
input output (0) | 2019.12.28 |
---|---|
class (0) | 2019.12.28 |
operating system (0) | 2019.12.28 |
module (0) | 2019.12.28 |
function (0) | 2019.12.28 |