xsl 스타일 시트에서 재귀 템플릿 호출을 감지하는 정규식을 개발하려고합니다.regex - 지정한 두 경계 사이의 특정 텍스트 찾기
지금까지 성공하지 못했습니다. 다음 코드에서
, 나는 재귀 적으로 호출되는 템플릿 B를 감지해야이 특정한 경우<xsl:template name="A">
blah blha [email protected]#?%$#^%?*?&(({}:"><;'[]\/.,./'
<xsl:call-template name="B">
blah blah
</xsl:template>
<xsl:template name="B">
blah blha
<xsl:call-template name="B">
blah blah
</xsl:template>
<xsl:template name="C">
blah blha
<xsl:call-template name="B">
blah blah
</xsl:template>
에서, 등록의 예는 괜찮습니다.
B에 대한 두 번째 호출을 제거한 경우 정규 표현식이 마지막 호출 B와 일치합니다. 발생하지 않아야합니다.
(<xsl:template name=\"(?<templateName>\w+)\">.*?(?<=<xsl:call-template name=\"\k<templateName>\">).*?</xsl:template>)+
저는 정규식 전문가가 아닙니다. 어떤 도움도 환영합니다.
감사합니다.
이를 해결하기 위해 정규 표현식을 사용하지 마십시오. –
동일한 문장에서 "정규 표현식"과 "재귀 적"은 문제가있을 것이라는 좋은 신호입니다. "중첩"이 필요한 언어는 정규 언어가 아니므로 정규 표현식과 정확히 일치시킬 수 없습니다. 일부 정규식 구현은 비정규 항목 (예 : 역 참조)을 수행 할 수 있지만 일반적으로 일치시키려는 항목이 일반 언어가 아닌 경우 일반 표현식을 사용하지 않습니다. –