로그 파일이 있습니다. 정규식 (python)을 사용하여 구문 분석하려고합니다. 각 행에는 "BEGIN"및 "END"태그가 있습니다. 또한 한 줄에는 'BEGIN'및 'END'태그 사이에 하나 이상의 'VALUE'태그가 포함될 수 있습니다. 주어진 줄에 "VALUE"태그가 없으면 "BEGIN"및 "END"태그 사이의 문자열을 캡처하고 싶습니다. 그러나 주어진 줄에 "VALUE"태그가 있으면 "BEGIN"... "VALUE", "VALUE"... "VALUE"및 "VALUE"태그 사이의 모든 문자열을 캡처하고 싶습니다. .. "END"태그 쌍. 캡처 문자열은 비어있을 수도 있습니다.주어진 문자열 앵커간에 문자열을 캡처하는 정규식
주어진 입력 :
Line1: words we can ignoreBEGINvalue1VALUEvalue with [email protected] we can ignore
Line2: BEGINvalue1VALUEVALUEVALUElastvalueENDwords we can ignore
Line3: words we can ignoreBEGINlastvalueEND
정규식은 반환해야합니다 :
Line1: (1)value1 (2)value with space (3)[email protected] (4)lastvalue
Line2: (1)value1 (2) (3) (4)lastvalue
Line3: (1)lastvalue
을 정규식에만 캡처 보이는 경우에 한 줄에 둘 이상의 "VALUE"태그가 있다면 실패 이하 "BEGIN"... "VALUE"및 "VALUE"... "END"사이의 문자열은 'VALUE'을 (를) 캡처하는 데 실패합니다 ...
BEGIN(.*?)(?:VALUE(.*?))*END
이것은 PyPi 정규식 모듈에서만 작동합니다. 아래의 더 나은 대안을보십시오. –