정규표현식_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