code

모든 정규식 일치의 색인을 찾으십니까?

codestyles 2020. 12. 11. 08:15
반응형

모든 정규식 일치의 색인을 찾으십니까?


따옴표로 묶인 문자열을 포함 할 수있는 문자열을 구문 분석하고 있습니다 (코드를 구문 분석하고 PLY를 피하려고합니다). 부분 문자열이 따옴표로 묶여 있는지 확인하고 싶습니다. 부분 문자열 인덱스가 있습니다. 내 초기 생각은 re를 사용하여 모든 일치 항목을 찾은 다음 그들이 나타내는 인덱스 범위를 파악하는 것이 었습니다.

re를 정규식과 함께 사용해야하는 것 같습니다 \"[^\"]+\"|'[^']+'(현재 트리플 따옴표 및 그러한 문자열을 다루는 것을 피하고 있습니다). findall ()을 사용하면 일치하는 문자열 목록을 얻습니다. 다소 좋지만 인덱스가 필요합니다.

내 부분 문자열은처럼 간단 할 수 있으며이 c특정 항목 c이 실제로 인용 되었는지 여부를 알아 내야합니다 .


이것은 당신이 원하는 것입니다 : ( 소스 )

re.finditer(pattern, string[, flags]) 

문자열의 RE 패턴에 대해 겹치지 않는 모든 일치 항목에 대해 MatchObject 인스턴스를 생성하는 반복기를 반환합니다. 문자열은 왼쪽에서 오른쪽으로 스캔되며 찾은 순서대로 일치 항목이 반환됩니다. 빈 일치는 다른 일치의 시작을 건드리지 않는 한 결과에 포함됩니다.

그런 다음 MatchObjects에서 시작 및 끝 위치를 가져올 수 있습니다.

예 :

[(m.start(0), m.end(0)) for m in re.finditer(pattern, string)]

참고 URL : https://stackoverflow.com/questions/3519565/find-the-indexes-of-all-regex-matches

반응형