정규표현식_2
Updated:
import re
정규표현식_2
?P< >
a = '김준태 - 학점 2.0'
p = re.compile('\w+\s.\s.+\s.+')
# \w+ \s . \s .+ \s .+
# 문자끝까지 공백 한글자 공백 문자끝까지 공백 문자끝까지
# .+로 문자 끝으로 가다가 \s를 만나면 멈춘다
print(p.match(a))
p = re.compile(r'(?P<name>\w+)\s.\s(?P<grade>.+\s.+)')
#P<name>로 이름으로 \w를 저장 P<grade>로 .+\s.+저장
# 김준태 학점 2.0
print(p.sub("\g<grade> - \g<name>",a))
#원래의 데이터를 grade - name으로 표현
<re.Match object; span=(0, 12), match=’김준태 - 학점 2.0’>
학점 2.0 - 김준태
?
a = '<안녕하세요><반갑습니다>'
p = re.compile('<.+>')
print(p.match(a))
a = '<안녕하세요><반갑습니다>'
p = re.compile('<.+?>')
# ? 는 만나면끝?
# ? 있어도 되고 없어도 되고
print(p.match(a))
<re.Match object; span=(0, 14), match=’<안녕하세요><반갑습니다>'> <re.Match object; span=(0, 7), match='<안녕하세요>'>안녕하세요>반갑습니다>안녕하세요>
\1
a = ['코끼리는 코끼리는','기린은 기린', '고양이는 고양이']
p = re.compile(r'(?P<name>.+)[는은]\s\1')
#()를 하면 그룹이 되고 \1로 재참조를 할 수 있다
# 코끼리는 코끼리 이기때문에 가능
# 앞과 같은 값이 사용되므로 사용할 수 있는 거다
for i in a:
matched = p.match(i)
print(matched)
print(matched.group(1))
<re.Match object; span=(0, 8), match=’코끼리는 코끼리’>
코끼리
<re.Match object; span=(0, 6), match=’기린은 기린’>
기린
<re.Match object; span=(0, 8), match=’고양이는 고양이’>
고양이
^
a = ['코끼리는 코끼리지요','기린은 기린지요', '고양이는 고양이지요']
p = re.compile(r'(?P<name>.+)[^은]\s\1')
# ^은 을 제외한 모든 값을 가져온다
for i in a:
matched = p.match(i)
print(matched)
<re.Match object; span=(0, 8), match=’코끼리는 코끼리’>
None
<re.Match object; span=(0, 8), match=’고양이는 고양이’>
$
a = ['코끼리는','기린은 기린', '고양이는 고양이']
p = re.compile(r'^(?P<name>.+)[는]$')
# & 끝 하나만 출력?
for i in a:
matched = p.match(i)
print(matched)
#print(matched.group(1))
<re.Match object; span=(0, 4), match=’코끼리는’>
None
None
Leave a comment