2011-05-03 5 views
1

짧은 제목에 내 문제를 설명하는 방법을 알지 못해서이 질문의 제목이 잘못 이해되면 유감입니다. 그러나 내가 찾는 것이 무엇인지 또는 그것이 가능하다면 정말로 모른다.정규 표현식 - 검색에서 첫 번째 일치를 참조하십시오.

HTML에서 일치하는 태그 집합 사이의 모든 것을 찾기 위해 정규 표현식을 사용하려고합니다. 고정 태그를 사용하여 테스트했을 때 쉽게 알 수있었습니다.

내 문제는 'myTag'가 될 수 있다는 사실에 있습니다. 저는 텍스트가 가변적 일 때 시작 태그를 종료 태그와 어떻게 매치시키는 지 (또는 가능한지) 모르겠습니다.

나는 달러 기호와 숫자를 사용할 수있는 정규식에서 어떤 종류의 참조 시스템을 본 것으로 알고 있지만 검색 자체 내에서 사용할 수 있는지 여부는 알지 못합니다.

나는 원래 다음과 같이 쓸 수 있다고 생각 했었습니다. \{(.*?)\}(someExpression)\{\/${1}\}하지만 실제로 작동하는지 또는 올바른지 혼자서는 알 수 없습니다.

나는이 질문을하는 것이 바람직하지 않기 때문에이 질문을하기를 바랍니다. 주로 내가 말했듯이 이것이 이름이 있는지 모르겠다. 가능하다면 정규 초보자이기도하다.

그리고 내가하는 일에 어떤 차이가 있는지는 preg_replace_callback 기능이있는 PHP에 있습니다.

도움을 주시면 감사하겠습니다.

\{([^}]*)\}(someExpression)\{\/\1\} 

을하지만 someExpression (예 .* 것이기 같은)과 끝 태그가 일치하지 않는 확인해야한다는 인식 :

답변

2

이보십시오. 물론 태그가 중첩 된 경우 모든 베팅이 해제되고 다른 정규 표현식 (또는 파서)이 필요합니다.

+0

+1 중첩 태그에 대한주의 사항 및주의 사항 제한 : – alex

+0

PCRE는 재귀 패턴을 지원합니다. – Gumbo

0

귀하의 경우에 따라 다릅니다. HTML 스 니펫이라면 HTML을 검색 할 수있는 특정 패턴이 있습니다. 정규식을 사용하여 패턴을 찾아서 바꿀 수는 있지만 HTML을 구문 분석하려고하는 것 같습니다. 따라서 문제는 중첩 된 태그가있는 것입니다. http://php.net/manual/en/function.preg-replace.php을 체크 아웃해야합니다. 콜백을 사용하는 것보다 사용하기가 훨씬 쉬운 것처럼 보이기 때문입니다.

정규 표현식에 대한 참고 사항으로 사용중인 언어에 따라 $ i 또는 \ i를 사용할 수 있습니다. php regex가 그룹 룩백을 캡쳐하는 것을 지원하는지 모르겠습니다.