프리 컴파일 된 정규 표현식을 다른 정규 표현식과 비교하는 우아한 방법이 있을까요? 나는 그렇지 않다고 생각하지만 여전히 물어보기로했다.Perl에서 다른 정규 표현식과 정규 표현식 일치하기
말, 특정 패턴에 해당하는 Puppet의 node.pp에있는 모든 노드를 찾고 싶습니다. 문제는 노드 이름을 정규식으로 정의 할 수 있다는 것입니다. 예를 들어, '생산'환경에서 모든 노드를 찾아야 할 수도 있는데, 관습에 따라 'p'다음에 1 또는 2가 붙습니다. /^p[12].+$/
. 즉,
p(1|2)proxy-[1-4].domain.lan
p1smtp-[1-2].domain.lan
p[12]what-not-[1-8].domain.lan
는 일치
q(1|2)proxy-[1-4].domain.lan
q(1|2)smtp-[1-2].domain.lan
q(1|2)what-not-[1-8].domain.lan
이 안 반면한다.
대상 문자열 (정규식으로 컴파일 된 경우)은보다 일반적인 표현식의 모든 하위 사례입니다. 바로 가기가 있다면 궁금합니다.
물론 '정규식'변형을 비롯한 리터럴 문자열로 노드 이름을 일치시킬 수 있습니다. 특정 경우에는 어렵지 않아야합니다.
그래서 어떤 정규 표현식과 비교하고 싶습니까? 'p (1 | 2) proxy- [1-4] .domain.lan'도'^ p [12]. + $'와 일치하는지 확인하고 싶습니까? 이 regexes는 어디서 오는가? 특히 두 번째 세트. – Borodin
@Borodin : 좀 더 구체적인 정규 표현식 문자열과 일치시키기 위해서는 좀 더 일반적인 정규 표현식이 필요합니다. regex-like 문자열이 어떤 방식으로 문자열이 아닌 regexes로 해석 될 수 있다면 더 쉽게 할 수 있습니다. 이 예제는 Puppet의 node.pp 파일에서 가져온 것입니다. 이제 질문에 대한 답을 얻었습니다. 아래를보십시오. – badbishop