day 17 markdown 총화
from re import fullmatch, search, findall 정규 표현 식 은 문자열 이 특정한 규칙 에 만족 하 는 지 확인 하 는 도구 입 니 다.
1. 정규 문법 2. python 은 정규 표현 식 에 대한 지원 으로 내 장 된 모듈 을 제공 합 니 다. re 3. fullmatch (정규 표현 식, 문자열): 전체 문자열 이 정규 표현 규칙 에 부합 되 는 지 판단 합 니 다.
= = = = = = = = = = = = = = = = = 1. 단일 문자 = = = = = = = = = = = = = = = = = = = = = = = = =
re_str = r'.'
result = fullmatch(re_str, 'a')
print(sesult)
하나의 문자열 과 일치 합 니 다. 두 글자 만 있 고 이 모든 문 자 는 임 의 문자 입 니 다.
re_str = r'..'
result = fullmatch(re_str, 'an')
print(result)
문자열 에 일치 합 니 다. 앞의 세 자 리 는 abc 이 고 마지막 자 리 는 임의의 문자 입 니 다.
re_str = r'abc.'
result = fullmatch(re_str, 'abc%')
print(result)
2) \ w 는 알파벳 숫자 밑줄 과 일치 하 는 문자열 입 니 다. 앞의 세 자 리 는 abc 이 고 마지막 두 자 리 는 알파벳 숫자 나 밑줄 입 니 다.
re_str = r'abc\w\w'
result = fullmatch(re_str, 'abc2g')
print(result)
3) \ s 는 공백 문자 (공백 은 빈 칸, 탭 문자 (\ t) 와 리 턴 () 등 공백 이 생 길 수 있 는 모든 문자) 와 일치 합 니 다. 앞의 세 자 리 는 알파벳 숫자 밑줄 이 고 네 번 째 자 리 는 공백 문자 이 며 마지막 자 리 는 임 의 문자 입 니 다.
re_str = r'\w\w\w\s.'
result = fullmatch(re_str, 'hu2\t?')
print(result)
4) \ d 는 문자열 과 일치 하 는 숫자 문자 입 니 다. 앞의 세 자 리 는 숫자 문자 이 고 마지막 자 리 는 임 의 문자 입 니 다.
re_str = r'\d\d\d.'
result = fullmatch(re_str, '782l')
print(result)
5) \ \ b 단어 경계 여 부 를 검사 합 니 다.
re_str = r'when\b\swhere'
result = fullmatch(re_str, 'when where')
print(result)
6) ^ 문자열 이 주어진 정규 표현 식 으로 시작 하여 문자열 과 일치 하 는 지, 두 개의 숫자 문자 로 시작 하 는 지 확인 합 니 다.
re_str = r'\d\d'
result = fullmatch(re_str, '23')
print(result)
7) $문자 에서 주어진 정규 표현 식 으로 문자열 a 숫자 와 일치 하 는 지, 그리고 a 숫자 는 문자열 의 끝 입 니 다.
re_str = r'a\d$'
result = fulllmatch(re_str, 'a8')
print(result)
8) \ W 는 숫자, 알파벳, 밑줄 이 아 닌 문자 와 일치 합 니 다.
re_str = r'\W\w'
result = fullmatch(re_str, '!a')
print(result)
9) \ \ S 가 공백 문자 와 일치 하지 않 음
re_str = r'\S\w\w\w'
result = fullmatch(re_str, '@a3h')
print(result)
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
re_str = r'[abc+]\d\d'
result = fullmatch(re_str, '+67')
print(result)
주의:
- : 。 '-' ,
[1-8]: :'1','2','3','4','5','6','7','8'
[-18] [18-]: '1','8','-'
1-8 ,
re_str = r'[1-8][a-z][a-z]'
result = fullmatch(re_str, '2hn')
print(result)
2. [^ 문자 집합] 일치 하지 않 는 문자 집합 에 있 는 임의의 문자 가 네 자리 문자열 과 일치 합 니 다. 첫 번 째 는 대문자 도 숫자 도 아니 고 세 번 째 는 abc 입 니 다.
re_str = r'[^A-Z\d]abc'
result = fullmatch(re_str, '#abc')
priint(result)
3) * 0 번 일치 하거나 여러 번 일치 하 는 문자열 입 니 다. 마지막 은 b 입 니 다. b 앞 에는 0 개 이상 의 a 가 있 습 니 다.
re_str = r'a*b'
print(fullmatch(re_str, 'aaab'))
re_str = r'[1-9]+\d*' # 10, 11, 100 ,1000
print(fullmatch(re_str, '1010'))
re_str = r'@?\d+'
print(fullmatch(re_str, '@16723'))
( )
+200, -120, 99, -1, 3, +4
re_str = r'[+-]?[1-9]+\d*'
print(fullmatch(re_str, '200'))
re_str = r'\d{3}' # 3
re_str = r'[a-zA-Z]{3}' # 3
print(fullmatch(re_str, 'aHh'))
re_str = r'\w{4,}'
print(fullmatch(re_str, 'hanc_123'))
re_str = r'a{,4}b' # 'b', 'ab', 'aab', 'aaab','aaaab'
print(fullmatch(re_str, 'aaaab'))
re_str = r'a{2,4}b' # 'aab', 'aaab', 'aaaab'
print(fullmatch(re_str, 'aaab'))
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
re_str = r'[a-zA-Z]{3}|\d{3}'
print(fullmatch(re_str, 'abc'))
'\d{3}[a-z]{2}' , '[A-F]{3}'
re_str = r'\d{3}[a-z]{2}|[A-F]{3}'
print(fullmatch(re_str, 'ABC'))
메모: 정규 에서 단락 작업 이 있 습 니 다. | 를 사용 하여 여러 조건 을 연결 하면 앞의 조건 이 결과 와 일치 합 니 다. 그러면 뒤의 조건 을 사용 하지 않 고 연습 과 일치 합 니 다. 정규 표현 식 을 쓰 면 문자열 의 모든 숫자 (정수 와 소수 포함) 와 일치 할 수 있 습 니 다.
'abc12.5hhh60,30.2kkk9nn0.12'
100, 89.89, 20.12, 0.23
re_str = r'[1-9]\d*[.]?\d*|0[.]\d+'
print()
re_str = r'[1-9]\d*|\d+[.]\d+'
re_str = r'\d+[.]\d+|[1-9]\d*'
print(findall(re_str, 'abc12.5hhh60,30.2kkk9nn0.12'))
re_str = r'([a-z]{2}\d{2}){3}'
print(fullmatch(re_str, 'ac23bn45hj34'))
하나의 문자열 과 일치 하 며, 하나의 숫자 에 따라 한 자모의 규칙 에 따라 한 번 또는 여러 번 나타 납 니 다.
re_str = r'(\d[a-z])+'
print(fullmatch(re_str, '9a2s3k4k9o'))
b. 앞의 그룹 에 일치 하 는 결 과 를 \ 숫자 로 반복 할 수 있 습 니 다.숫자의 값 은 앞의 몇 번 째 그룹 을 대표 합 니 다.
re_str = r'(\d{2}[A-Z])=%\1\1'
print(fullmatch(re_str,'23B=%23B23B'))
re_str = r'(\d{3})-(\w{2})\1{2}\2'
print(fullmatch(re_str,'123-aa123123aa'))
c. 캡 처 는 전체 정규 표현 식 에 따라 일치 하고 () 의 내용 만 캡 처 합 니 다.findall 에서 만 유효 합 니 다.
re_str = r'a(\d{3})b'
print(fullmatch(re_str, 'a786b'))
print(findall(re_str, 'a786b'))
정규 중의 전의
1. 정규 표현 식 의 전의 와 문자열 의 전의 문 자 는 아무런 관계 가 없습니다.python 의 문자열 앞 에 r 를 붙 여 문자열 의 전 의 를 막 습 니 다. 정규 표현 식 의 전 의 를 막 을 수 없습니다. 2. 정규 표현 식 에 서 는 특별한 의미 가 있 는 기호 앞 에 \ 를 붙 여 기호 자 체 를 표시 할 수 있 습 니 다 +. *? \() ^ $| 주의:
a.-
b. [] , -
c.\ , ^
예 를 들 면:
re_str = r'a\+'
print(re.fullmatch(re_str, 'a+'))
re_str = r'\+a'
print(re.fullmatch(re_str, '+a'))
re_str = r'\\w-a'
print(re.fullmatch(re_str, '\w-a'))
re_str = r'\(\d{3}'
print(re.fullmatch(re_str,'(234'))
re_str = r'\[abc\]'
re_str = r'[\^.?*]mbc\\'
print(re.fullmatch(re_str, '?mbc\\'))
re 모듈
1. copile (정규 표현 식): 정규 표현 식 을 정규 표현 식 대상 으로 변환 합 니 다.
re_str = r'\d+'
re_object = re.compile(re_str)
print(re_object)
,
re.fullmatch(re_str, '78hj')
,
re_object.fullmatch('78hj')
2. match (정규 표현 식, 문자열) 와 fullmatch (정규 표현 식, 문자열) match: 문자열 의 시작 이 정규 표현 식 과 일치 할 수 있 는 지 여 부 를 판단 합 니 다. 전체 문자열 이 정규 표현 식 과 일치 할 수 있 는 지 여 부 를 판단 합 니 다. 일치 할 경우 일치 하 는 대상 을 되 돌려 줍 니 다. 그렇지 않 으 면 None 로 돌아 갑 니 다.
re_str = r'abc\d{3}'
match1 = re.match(re_str, 'abc234abcdef')
match2 = re.fullmatch(re_str, 'abc234')
print(match1)
print(match2)
a. 일치 하 는 범위.결과 문자 와 일치 하 는 아래 표지 범위: (시작 표시, 끝 표시) - 끝 표시 에서 print (match1. span () 를 가 져 올 수 없습니다. 출발점 print (match1. start () 를 가 져 옵 니 다. 종점 print (match1. end () 를 가 져 옵 니 다. 주의: group 매개 변 수 는 그룹 에 대응 하 는 결 과 를 지정 합 니 다.
re_str = r'(\d{3})\+([a-z]{2})'
match1 = re.match(re_str, '234+hjaaaaaa')
print(match1)
print(match1.span())
, 1
print(match1.span(1))
, 2
print(match1.span(2))
, 2
print(match1.start(2))
b. 일치 하 는 결과 에 대응 하 는 문자열 print (match1. group () print (match1. group (1) print (match1. group (2) 가 져 오기
c. 일치 하 는 원래 문자열 print (match 1. string) 3. search (정규 표현 식, 문자열) 를 가 져 옵 니 다. 문자열 에서 정규 표현 식 의 요 구 를 만족 시 키 는 첫 번 째 하위 문자열 을 찾 습 니 다. 찾 으 면 일치 하 는 대상 으로 돌아 갑 니 다. None 로 돌아 갈 수 없습니다.
search1 = re.search(r'\d+aa', 'he9aallo 78aabc wolrd')
print(search1)
if search1:
print(search1.span())
연습: search 를 사용 하여 한 문자열 의 모든 숫자 문자열 을 찾 습 니 다.
str1 = ' 10000 , 18 , :180, 100 '
re_str = r'[1-9]\d*'
search1 = re.search(re_str, str1)
while search1:
print(search1.group())
end = search1.end()
str1 = str1[end:]
search1 = re.search(re_str, str1)
4. split (정규 표현 식, 문자열) 정규 표현 식 을 만족 시 키 는 하위 문자열 에 따라 문자열 의 반환 값 을 자 르 는 것 이 목록 입 니 다.
str1 = ' , 。 , !'
result = re.split(r'\W+', str1)
print(result)
5. sub (정규 표현 식, 문자열 교체, 교 체 된 문자열) 반환 값 은 새 문자열 입 니 다.
word = ' ? . Fuck you'
result = re.sub(r' | |Fuck| ', '*', word)
print(result)
6. findall (정규 표현 식, 문자열) 에서 정규 표현 식 을 만족 시 키 는 모든 하위 문자열 반환 값 을 가 져 옵 니 다. 목록 주의: 그룹 에서 의 캡 처 효 과 는 여기 서 유효 합 니 다.
result = re.findall(r'\d([a-z]+)', ' 1boy,and 0action')
print(result)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.