반응형
error: multiple repeat at position¶
re
메서드를 적용할 때 정규식이 잘못 적혀있으면 아래와 같은 에러가 나타납니다.ㅡ
In [1]:
import re
# [\s]? 는 공백이 있을 수도 있고 없을 수도 있다는 의미 입니다 !
pattern = r"U[\s]?+"
sentence = "lg U+를 찾아 주세요"
re.findall(pattern, sentence)
--------------------------------------------------------------------------- error Traceback (most recent call last) <ipython-input-1-21180391b3e9> in <module> 5 sentence = "lg U+를 찾아 주세요" 6 ----> 7 re.findall(pattern, sentence) ~/opt/anaconda3/lib/python3.8/re.py in findall(pattern, string, flags) 239 240 Empty matches are included in the result.""" --> 241 return _compile(pattern, flags).findall(string) 242 243 def finditer(pattern, string, flags=0): ~/opt/anaconda3/lib/python3.8/re.py in _compile(pattern, flags) 302 if not sre_compile.isstring(pattern): 303 raise TypeError("first argument must be string or compiled pattern") --> 304 p = sre_compile.compile(pattern, flags) 305 if not (flags & DEBUG): 306 if len(_cache) >= _MAXCACHE: ~/opt/anaconda3/lib/python3.8/sre_compile.py in compile(p, flags) 762 if isstring(p): 763 pattern = p --> 764 p = sre_parse.parse(p, flags) 765 else: 766 pattern = None ~/opt/anaconda3/lib/python3.8/sre_parse.py in parse(str, flags, state) 946 947 try: --> 948 p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0) 949 except Verbose: 950 # the VERBOSE flag was switched on inside the pattern. to be ~/opt/anaconda3/lib/python3.8/sre_parse.py in _parse_sub(source, state, verbose, nested) 441 start = source.tell() 442 while True: --> 443 itemsappend(_parse(source, state, verbose, nested + 1, 444 not nested and not items)) 445 if not sourcematch("|"): ~/opt/anaconda3/lib/python3.8/sre_parse.py in _parse(source, state, verbose, nested, first) 669 source.tell() - here + len(this)) 670 if item[0][0] in _REPEATCODES: --> 671 raise source.error("multiple repeat", 672 source.tell() - here + len(this)) 673 if item[0][0] is SUBPATTERN: error: multiple repeat at position 6
multiple repeat at position 6
와 같은 에러 메서지에서 안내한 포지션을pattern
변수에서 확인하면 에러 원인을 찾을 수 있습니다
In [2]:
pattern[6]
Out[2]:
'+'
- 이제
+
문구가 문제가 있다는 것을 확인했으니 아래와 같이 수정해 줄 수 있습니다.
In [3]:
import re
# \ 기호를 + 앞에 붙여서 문자 반복을 나타내는 정규식이 아닌 문자 그대로 +를 나타내게 만들어 주면 에러가 나지 않는다.
pattern = r"U[\s]?\+"
sentence = "lg U+를 찾아 주세요"
re.findall(pattern, sentence)
Out[3]:
['U+']
반응형
'python' 카테고리의 다른 글
파이썬 이름 리스트 예시 (0) | 2023.11.30 |
---|---|
파이썬 리스트 순서 뒤집기 (0) | 2023.11.30 |
OSError: [Errno 66] Directory not empty: 'test_direction' (0) | 2023.11.23 |
OSError: [E050] Can't find model 'ko_core_news_sm'. It doesn't seem to be a Python package or a valid path to a data directory (0) | 2023.11.16 |
파이썬 여러공백을 하나의 공백으로 re (0) | 2023.11.10 |
댓글