정규표현식_1
Updated:
정규표현식_1
import re
a = 'abcd'
p = re.compile('..')
print(p.match(a))
<re.Match object; span=(0, 2), match=’ab’>
+
list_a = ['','ab','a1b','a12b','a123b']
p = re.compile('.+')
for i in list_a:
print(p.match(i))
*
None
<re.Match object; span=(0, 2), match=’ab’>
<re.Match object; span=(0, 3), match=’a1b’>
<re.Match object; span=(0, 4), match=’a12b’>
<re.Match object; span=(0, 5), match=’a123b’>
list_a = ['','ab','a1b','a12b','a123b']
p = re.compile('.*')
for i in list_a:
print(p.match(i))
<re.Match object; span=(0, 0), match=’’>
<re.Match object; span=(0, 2), match=’ab’>
<re.Match object; span=(0, 3), match=’a1b’>
<re.Match object; span=(0, 4), match=’a12b’>
<re.Match object; span=(0, 5), match=’a123b’>
- +는 현재값을 포함하지 않는다
- *는 현재값을 포함한다
.
list_a = ['','ab','a1b','a12b','a12']
p = re.compile('..2.*')
# 2앞에 2개의 민 공간이 있는 문자열을 가져온다
for i in list_a:
print(p.match(i))
None
None
None
<re.Match object; span=(0, 4), match=’a12b’>
<re.Match object; span=(0, 3), match=’a12’>
list_a = ['a','ab','a1b','a12b','123a']
p = re.compile('.*a.*')
# a를 포함한 모든 값들을 가져온다
for i in list_a:
print(p.match(i))
<re.Match object; span=(0, 1), match=’a’>
<re.Match object; span=(0, 2), match=’ab’>
<re.Match object; span=(0, 3), match=’a1b’>
<re.Match object; span=(0, 4), match=’a12b’>
<re.Match object; span=(0, 4), match=’123a’>
list_a = ['a b','abbb','a1c','a12b','123ab','ab']
p = re.compile('.*a.*b.*')
# 문자열에 a와 b를 포함하면 가져온다
for i in list_a:
print(p.match(i))
<re.Match object; span=(0, 3), match=’a b’>
<re.Match object; span=(0, 4), match=’abbb’>
None
<re.Match object; span=(0, 4), match=’a12b’>
<re.Match object; span=(0, 5), match=’123ab’>
<re.Match object; span=(0, 2), match=’ab’>
.{}
list_a = ['a b','abbb','a1c','a12b','123a b','a b']
p = re.compile('a.{1,3}b')
# 문자열에 a로 시작하고 b로 끝나면서 사이의 거리가 1~3
for i in list_a:
print(p.match(i))
<re.Match object; span=(0, 3), match=’a b’>
<re.Match object; span=(0, 4), match=’abbb’>
None
<re.Match object; span=(0, 4), match=’a12b’>
None
<re.Match object; span=(0, 4), match=’a b’>
search
list_a = ['12 aba','a ab','a1b','a12b','a123b']
p = re.compile('a')
for i in list_a:
print(p.search(i))
# 가장 먼저 찾은 a의 위치를 가져온다
<re.Match object; span=(3, 4), match=’a’>
<re.Match object; span=(0, 1), match=’a’>
<re.Match object; span=(0, 1), match=’a’>
<re.Match object; span=(0, 1), match=’a’>
<re.Match object; span=(0, 1), match=’a’>
findall
a = 'ab a1b a12b a123a'
p = re.compile('a')
print(type(p.findall(a)))
print(p.findall(a))
# 문자열이 가지고 있는 a의 수만큼 a를 가져와서 list로 출력
<class ‘list’>
[‘a’, ‘a’, ‘a’, ‘a’, ‘a’]
finditer
a = 'ab a1b a12b a123a'
p = re.compile('a')
print(type(p.finditer(a)))
print(p.finditer(a))
# iterator객체로 반환
for i in p.finditer(a):
print(i)
# iterator객체의 사용
<class ‘callable_iterator’>
<callable_iterator object at 0x0000019F24CC4C48>
<re.Match object; span=(0, 1), match=’a’>
<re.Match object; span=(3, 4), match=’a’>
<re.Match object; span=(7, 8), match=’a’>
<re.Match object; span=(12, 13), match=’a’>
<re.Match object; span=(16, 17), match=’a’>
group span start end
list_a = ['ab','a1b','a12b','a123b']
p = re.compile('a.*b')
for i in list_a:
print(p.match(i).group())
# 해당 문자 출력
print()
for i in list_a:
print(p.match(i).span())
# 해당 문자의 인덱스 범위 출력
print()
for i in list_a:
print(p.match(i).start())
# 해당 문자의 인덱스 시작 출력
print()
for i in list_a:
print(p.match(i).end())
# 해당 문자의 인덱스 끝 출력
ab
a1b
a12b
a123b
(0, 2)
(0, 3)
(0, 4)
(0, 5)
0
0
0
0
2
3
4
5
re.I
list_a = ['ab','a1b','a12b','a123b']
p = re.compile('A.*B',re.I)
# re.I를 사용하면 대소문자를 무시하고 출력한다
for i in list_a:
print(p.match(i).span())
(0, 2)
(0, 3)
(0, 4)
(0, 5)
\d \D
list_a = ['ab','a1b','a12b','accb']
p = re.compile('a\db')
for i in list_a:
print(p.match(i))
print()
p = re.compile('a\d\db')
# 숫자가 들어갔는지 확인
for i in list_a:
print(p.match(i))
print()
p = re.compile('a\D\Db')
# 숫자가 안들어갔는지 확인
for i in list_a:
print(p.match(i))
None
<re.Match object; span=(0, 3), match=’a1b’>
None
None
None
None
<re.Match object; span=(0, 4), match=’a12b’>
None
None
None
None
<re.Match object; span=(0, 4), match=’accb’>
sub
list_a = ['ab','a1b','a12b','accb']
p = re.compile('a')
for i in list_a:
print(p.sub('b',i))
# sub는 값에 해당하는 것을 바꾸어 준다
bb
b1b
b12b
bccb
list_a = ['ab','a1b','a12b','accb']
p = re.compile('a\db')
for i in list_a:
print(p.sub('ddd',i))
# a와 b로 시작하고 사이에 숫자가 하나있으면 bbb로 변경
ab
ddd
a12b
accb
with def
list_a = ['ab','a1b','a12b','accb','a123b']
p = re.compile('a..b')
def plus_good(match):
matched = match.group() #문자열
return matched+'good'
# 함수를 사용하여 표현할 수 있다
for i in list_a:
print(p.sub(plus_good,i))
ab
a1b
a12bgood
accbgood
a123b
Leave a comment