파이썬에서, 비 캡처 그룹 내에서 어떻게 그룹을 캡처합니까? 다른 방법으로, 캡처 링 그룹을 포함하는 캡처되지 않는 하위 패턴을 어떻게 반복합니까?비 캡처 그룹 내의 Regex 캡쳐 그룹
예를 들어 가져 오기 문자열의 모든 패키지 이름을 캡처 할 수 있습니다. 예 : 문자열 :
수입 팬더, 운영 체제, SYS
은 '팬더', 'OS'및 'SYS'를 반환합니다. 다음 패턴은 첫 번째 패키지를 캡처하고 두 번째 패키지에 일어나서 :
import\s+([a-zA-Z0=9]*),*\s*
여기에서 내가 즉 ([a-zA-Z0=9]*),*\s*
을, 그룹을 캡처하고 다음 문자와 일치하는 하위 패턴을 반복하고 싶습니다. 이 하위 패턴을 비 캡처 그룹으로 묶고 반복 할 때 :
import\s+(?:([a-zA-Z0=9]*),*\s*)*
더 이상 그룹을 캡처하지 않습니다.
을 PyPi 정규식 모듈. –
문제는 그룹 및 비 캡처 그룹을 캡처하는 데 문제가되지 않습니다. 문제는 나중에 사용할 수 있도록 _unset_ 개의 변수를 얻으려는 것입니다. 캡처 그룹에 대해 '*'를 사용하면 원하는 결과가 거의 산출되지 않습니다. 이것은 일반적으로 사용되는 정규식이 아닙니다. 대신 합리적인 것은 전체 가져 오기 패키지 세트를 가져 와서 문자열을', \ s * (? = \ w)'또는 그와 비슷한 것으로 분리하는 것입니다. –