정규 표현 식 의 기본 사용 2018 - 07 - 30
기호.
text = r'this is a sample text'
print(re.findall(r'is a',text))
for i in re.finditer(r'is a',text):
print(i.group(),i.start())
<<< ['is a']
<<< is a 5
re1|re2
text = r'123/123-4212-4242/23543'
for item in re.split(r'(?:/|-)',text):
print(item)
<<< 123
<<< 123
<<< 4212
<<< 4242
<<< 23543
.
모든 문자 와 일치 합 니 다 (제외) text = r'123/123-42abc12-4242/23543'
print(re.findall(r'-.......-',text))
<<< ['-42abc12-']
^
문자열 의 시작 부분 과 일치 합 니 다 text = r'123qwe123'
for it in re.finditer(r'^123',text):
print(it.start())
<<< 0
$
문자열 종료 부분 일치
text = r'123qwe123'
for it in re.finditer(r'123$',text):
print(it.start())
<<< 6
*
0 회 또는 여러 번 앞 에 나타 난 정규 표현 식 text = r'''\
Cool Things
Cool Things
CoolThings
'''
print(re.findall(r'\w\w\w\w\s*\w\w\w\w\w\w',text))
<<< ['Cool Things', 'Cool Things', 'CoolThings']
Cool 과 Things 사이 에 하나 이상 의 빈 칸 이 있 거나 없 을 수 있 습 니 다.
+
한 번 또는 여러 번 앞 에 나타 난 정규 표현 식 text = r'''\
Cool Things
Cool Things
CoolThings
'''
print(re.findall(r'\w\w\w\w\s+\w\w\w\w\w\w',text))
<<< ['Cool Things', 'Cool Things']
Cool 과 Things 사이 에 하나 이상 의 빈 칸 이 있 을 수 있 습 니 다.
?
0 회 또는 1 회 앞 에 나타 난 정규 표현 식 text = r'''\
Cool Things
Cool Things
CoolThings
'''
print(re.findall(r'\w\w\w\w\s?\w\w\w\w\w\w',text))
<<< ['Cool Things', 'CoolThings']
Cool 과 Things 사이 에 빈 칸 이 있 거나 없 을 수 있 습 니 다.
{N}
N 회 앞 에 나타 난 정규 표현 식 앞의 대량 중복 개선
text = r'''\
Cool Things
Cool Things
CoolThings
'''
print(re.findall(r'\w{4}\s*\w{6}',text))
<<< ['Cool Things', 'Cool Things', 'CoolThings']
{M,N}
M ~ N 회 앞 에 나타 난 정규 표현 식 과 일치 합 니 다 text = '''\
www.baidu.com
www.google.com
www.360.com
www.errorformat
'''
for it in re.finditer(r'www(\.\w+){2,3}',text):
print(it.group())
<<< www.baidu.com
<<< www.google.com
<<< www.360.com
[…]
문자 집합 에서 온 임의의 단일 문자 모음 자모의 위 치 를 찾아내다
text = '''\
I believe, for every drop of rain
that falls, A flower grows...
I believe that somewhere in the
darkest night, A candle glows...
'''
for it in re.finditer(r'(?i)[aeiou]',text):
print(it.start(),end=' ')
<<< 0 3 5 6 8 12 15 17 23 26 30 31 36 40 46 50 52 57 64 67 69 70 72 76 80 82 85 87 89 94 97 100 105 111 114 118 122
[..x−y..]
x ~ y 범위 의 임의의 단일 문자 8 진수 가 될 문자열 을 찾 아 라.
text = '''\
adas a1290 21469
12412 762 10923
aeqw
'''
for it in re.finditer(r'\b[0-7]+\b',text):
print(it.group(),end=' ')
<<< 12412 762
[^…]
이 문자 가 집중 적 으로 나타 나 는 모든 문자 와 일치 하지 않 습 니 다. 특정한 범위 의 문자 (이 문자 가 집중 적 으로 나타 나 면) 숫자 가 없 는 비 공백 단 어 를 찾아내다
text = '''\
adas a1290 21469
12412 762 10923
aeqw
'''
print(repr(text))
for it in re.finditer(r'\b[^0-9\s]+\b',text):
print(it.group(),end=' ')
<<< adas aeqw
(…)
폐쇄 된 정규 표현 식 과 일치 한 다음 하위 그룹 조합 디자인 모드 의 맛 이 있 습 니 다. () 내 에 도 완전한 정규 표현 식 입 니 다. 하위 그룹 추출 에 사용 할 수 있 습 니 다.
text = '''\
11/27/1997
5/22/1998
2/29/1996
'''
print(repr(text))
for it in re.finditer(r'(\d+)/(\d+)/(\d+)',text):
print(it.group(3),' ',it.group(1),' ',it.group(2),' ')
<<< 1997 11 27
<<< 1998 5 22
<<< 1996 2 29
(*|+|?|{})?
위 에 자주 나타 나 거나 반복 되 는 기호 와 일치 하 는 비 탐욕 버 전 (*, +,?, {}) text = '''\
3.1415926
3.14
'''
print(repr(text))
for it in re.finditer(r'\d+\.[\d]{4,6}?',text):
print(it.group())
<<< 3.1415
특수 문자
앞 에 \ w \ b \ d 와 같은 특수 기호 가 많이 나 타 났 습 니 다. 다음은 다음 과 같 습 니 다.
\d
는 10 진 숫자 와 일치 합 니 다. [0 - 9] 와 일치 합 니 다 \D
는 \d
와 반대 되 고 그 어떠한 비 수치 형 숫자 도 일치 하지 않 습 니 다. 예 를 들 어 data\d+.txt
는 data1. txt, data2. txt 와 일치 합 니 다. \w
은 모든 자모 숫자 문자 와 일치 하고 [A-Za-z0-9_]
와 같다 \W
. 예 를 들 어 식별 자 는 [a-zA-Z_]\w+
\s
모든 빈 칸 문자 와 일치 하 며 [
\t\r\v\f]
와 같 습 니 다 \S
와 반대) 예 를 들 어 You\sare\sthe\winner
\b
모든 단어 경계 \B
와 반대) 예 를 들 어 \bThe\b
\N
저 장 된 하위 그룹 N
과 일치 합 니 다 (위의 (...) text = '''\
3.14 3.1415926
'''
m = re.match(r'(\d+\.\d+)\s+(\1\d+)',text)
if m is not None:
print(m.group(1),m.group(2))
<<< 3.14 3.1415926
\c
글자 마다 모든 특수 문자 c
(즉, 글자 의 의미 에 따라 만 일치 하고 특수 한 의미 와 일치 하지 않 음) c
를 포함 합 니 다. \ '[] {} ()? + * 등 정규 표현 식 에 사용 되 는 태그 기호 \A(\Z)
일치 하 는 문자열 의 시작 (끝) (위 에서 소개 한 ^
과 $
예 를 들 어 \ADear
(?iLmsux)
정규 표현 식 에 하나 이상 의 특수 '태그' 인자 (또는 함수 / 방법 을 통 해) 를 삽입 합 니 다.(?...)
는 하나 이 며 정규 표현 식 의 가장 왼쪽 끝 (?i)
대소 문 자 를 무시 하 는 데 사 용 됩 니 다. 앞에서 보 여 준 모음 자 모 는 r'(?i)[aeiou]'
(?m)
문자열 을 전체 로 보 는 것 이 아니 라 줄 간 검색 을 실현 합 니 다. ^&
줄 마다 의 끝 (?s)
로 하여 금 .
줄 바 꿈 문자 (?x)
이 표 시 는 사용자 가 정규 표현 식 에서 공백 문자 (문자 클래스 나 반사 선 전의 제외) 를 사용 하 는 것 을 억제 함으로써 읽 기 쉬 운 정규 표현 식 을 만 들 수 있 도록 합 니 다. (?:…)
저장 하지 않 은 그룹 과 일치 하 는 그룹 을 표시 합 니 다. 이 표 시 를 사용 하면 그룹 은 matchObj. groups () 에 저장 되 지 않 습 니 다 (?P…)
숫자 ID 가 아 닌 name 표지 만 있 는 정규 그룹 과 일치 하 는 것 처럼 그룹 이름 을 지 을 수 있 습 니 다 (?P=name)
같은 문자열 에서 (? P = name) 로 구 성 된 이전 텍스트 이전의 예 를 고 쳐 쓰다.
text = '''\
3.14 3.1415926
'''
m = re.match(r'(?P\d+\.\d+)\s+((?P=prefix)\d+)',text)
if m is not None:
print(m.group(1),m.group(2))
<<< 3.14 3.1415926
sub
방법 에서 g
로 그룹 명 을 검색 할 수 있다.text = '''\
11/27/1997\
'''
res = re.sub(r'(?P\d+)/(?P\d+)/(?P\d+)',r'\g/\g/\g',text)
print(res)
<<< 27/11/1997
(?#…)
주석 을 표시 하고 모든 내용 이 무시 되 었 습 니 다 (?=…)
일치 조건 은... 다음 위치 에 나타 나 면 입력 문자열 을 사용 하지 않 고 정방 향 전시 단언 일치 할 때 앞으로 접미사 매 칭 을 시도 하고 접미사 가 성공 하면 접두사 와 일치 한 다 는 뜻 입 니 다.
text = '''\
11/27/1997\
'''
for it in re.finditer(r'\d{1,2}/\d{1,2}(?=/\d{4})',text):
print(it.group())
<<< 11/27
(?!…)
일치 조건 은... 다음 위치 에 나타 나 지 않 으 면 입력 문자열 을 사용 하지 않 습 니 다. 마이너스 전진 단언 (?=…)
과 반대로 접미사 가 일치 하지 않 으 면 접두사 와 일치 합 니 다.(?<=…)
일치 조건 은... 이전 위치 에 나타 나 면 입력 문자열 을 사용 하지 않 고 정방 향 백 엔 드 단언 접 두 사 를 검사 합 니 다. 접두사 가 일치 하면 접두사 가 일치 합 니 다.
text = '''\
ABC12345 qd7654\
'''
print(text)
print()
for it in re.finditer(r'(?<=[a-zA-Z]{3})\d+',text):
print(it.group())
<<< 12345
(? … , ;
접 두 사 를 검사 합 니 다. 접두사 가 일치 하지 않 으 면 접두사 와 일치 합 니 다.
(?(id/name)Y|N )
그룹 이 제공 하 는 id
또는 name
(이름) 이 존재 하면 정규 표현 식 의 조건 일치 Y
를 되 돌려 주 고 존재 하지 않 으 면 되 돌려 줍 니 다 N
. |N
옵션 이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.