반응형
파이썬 정규식이 모든 겹치는 일치를 찾으십니까?
파이썬 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]
겹치는 일치를 지원하는 타사 regex
모듈 (아님 re
)을 사용해 볼 수도 있습니다 .
>>> import regex as re
>>> s = "123456789123456789"
>>> matches = re.findall(r'\d{10}', s, overlapped=True)
>>> for match in matches: 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
참고 URL : https://stackoverflow.com/questions/5616822/python-regex-find-all-overlapping-matches
반응형
'development' 카테고리의 다른 글
NSIndexpath.item 대 NSIndexpath.row (0) | 2020.10.25 |
---|---|
비교 기준으로 findBy 메소드를 사용하는 방법 (0) | 2020.10.25 |
Java에서 두 문자열 세트를 결합하는 더 좋은 방법이 있습니까? (0) | 2020.10.25 |
신속한 변수가있는 NSLocalizedString (0) | 2020.10.25 |
데이터베이스에서 각각의 테이블 및 필드 목록 가져 오기 (0) | 2020.10.25 |