나는 중첩 된 해시 트리를 가지고 있는데, 각 트리에는 파일이있는 중첩 된 디렉토리와 같은 이름이 들어 있습니다. 런타임에 외국에서 제공 한 regexps를 얻는다면 (분석하고 싶지는 않습니다) 어떻게 일치 항목을 찾을 하위 트리를 찾을 수 있습니까? 해시의 수천이있을 수 있기 때문에 일치하는 경로가 양식문자열이 더 길면 Perl 정규 표현식 부분 일치?
"$x{name}/$x{subdir}{name}/$x{subdir}{subdir}{name}"
될하지만, 수도, 내가 경우에만이 두 부분 일치의 시도하려는 :
더 나은"$x{name}"
"$x{name}/$x{subdir}{name}"
또는, 첫 번째 부분이 일치하는 경우 /\G.../g
과 같은 형식으로 2 번째와 3 번째와 직접 작업을 시도하십시오. 단, 정규 표현식은 한 부분의 다른 부분에서 오는 것입니다. 그리고 부분 일치하는 다른 모든 하위 디렉토리를 조사하기 위해 역 추적이 필요할 것입니다.
PCRE g_match_info_is_partial_match은 내가 원하는 것을 들리지만 그 이름에 "Perl"이 있음에도 불구하고 5.18 소스에도이 내용이 포함되어 있지 않습니다. 그리고 저는 실제로 5.8.0과 호환되는 것을 원합니다.
이 배경에 대한 설명은 makepp에 regexp 구문을 도입했습니다. 우리는 본질적으로 패턴을 위해 그렇게하지만, 쉬운 구문으로 인해 쉽습니다. Google은 어떤 파일을 찾았는지를 저장하고 더 많은 파일이 나타날 때이를 처리 할 수 있습니다. 이렇게하면 메이 프가 규칙의 출력을 트리에 넣기 때문에 나중에 빌드 될 수있는 파일과 일치시킬 수 있습니다.
나는 또한 마지막 문장의 줄을 따라 생각해 왔습니다. 그러나 그것은 정규 표현식을 분석하는 것을 의미 할 것입니다. 모든 멋진 look-aheads와 -behinds를 가진 어려운 작업입니다. 또는 일치하는 문자열에'. *'를 역으로 추가하십시오. 내가 어떻게 가능할 수 있는지는 생각할 수 없다. – Daniel