정규식을 사용하여 겹치는 모든 일치 항목을 찾는 방법
저는 파이썬 2.6에서 re를 사용하여 더 큰 숫자 시리즈 내의 모든 10자리 숫자 시리즈를 찾으려고 합니다.
중복되는 경기를 쉽게 잡을 수는 없지만, 모든 경기를 번호 시리즈로 하고 싶습니다.예.
"123456789123456789"에서
저는 다음 목록을 받아야 합니다.
[1234567891,2345678912,3456789123,4567891234,5678912345,6789123456,7891234567,8912345678,9123456789]
저는 "미리 보기"에 대한 참조를 찾았지만, 제가 본 예는 더 큰 그룹화보다는 숫자 쌍만 보여주고 두 자리 이상으로 변환할 수 없었습니다.
미리 보기 내에서 캡처 그룹을 사용합니다.미리 보기는 관심 있는 텍스트를 캡처하지만 실제 일치는 미리 보기 전의 0 너비 하위 문자열이므로 일치는 기술적으로 중복되지 않습니다.
import re
s = "123456789123456789"
matches = re.finditer(r'(?=(\d{10}))', s)
results = [int(match.group(1)) for match in matches]
# results:
# [1234567891,
# 2345678912,
# 3456789123,
# 4567891234,
# 5678912345,
# 6789123456,
# 7891234567,
# 8912345678,
# 9123456789]
타사 모듈을 사용해 볼 수도 있습니다.re
). 중복된 일치 항목을 지원합니다.
>>> import regex as re
>>> s = "123456789123456789"
>>> matches = re.findall(r'\d{10}', s, overlapped=True)
>>> for match in matches: print(match) # print match
...
1234567891
2345678912
3456789123
4567891234
5678912345
6789123456
7891234567
8912345678
9123456789
저는 정규식을 좋아하지만, 여기서는 필요하지 않습니다.
간단히
s = "123456789123456789"
n = 10
li = [ s[i:i+n] for i in xrange(len(s)-n+1) ]
print '\n'.join(li)
결과
1234567891
2345678912
3456789123
4567891234
5678912345
6789123456
7891234567
8912345678
9123456789
수락된 답변을 바탕으로 다음과 같은 내용도 현재 작동합니다.
import re
s = "123456789123456789"
matches = re.findall(r'(?=(\d{10}))',s)
results = [int(match) for match in matches]
일반적인 방법:
import re
S = '123456789123456789'
result = []
while len(S):
m = re.search(r'\d{10}', S)
if m:
result.append(int(m.group()))
S = S[m.start() + 1:]
else:
break
print(result)
언급URL : https://stackoverflow.com/questions/5616822/how-to-use-regex-to-find-all-overlapping-matches
'programing' 카테고리의 다른 글
Panda로 탭으로 구분된 파일 읽기 - Windows에서는 작동하지만 Mac에서는 작동하지 않습니다. (0) | 2023.07.21 |
---|---|
PphpStorm이 여러 데이터베이스 연결에 대한 열을 확인할 수 없습니다. (0) | 2023.07.21 |
실제 쿼리를 실행하지 않고 JDBC 문에 대한 SQL 구문을 확인하려면 어떻게 해야 합니까? (0) | 2023.07.21 |
최대 절전 모드(EntityManager) 또는 JPA를 사용하여 Oracle 함수 또는 프로시저를 호출하는 방법 (0) | 2023.07.21 |
JPA Lazy Loading이 Spring boot에서 작동하지 않습니다. (0) | 2023.07.21 |