사람들이 말했듯이 XML은 정규 언어가 아니기 때문에 이것은 아마도 쓸데없는 노력 일 것입니다. 그러나 문제의 일부는 미리보기입니다. 바로 뒤에 꺽쇠 괄호가없는 것을 확인하십시오. 즉, 이 <abc>
인 것도 원하지 않을 때에도 일치합니다. 따라서 미리보기에 전체 태그 구조를 포함해야합니다.
#</?([a-z]?:)?[a-z]*(?!/?([a-z]?:)?[a-z]*>)#
당신이 행동 here에서 볼 수 있습니다
당신이, 내가 정규 표현식을 사용할 수 준 정확한 데이터의 일치를 얻으려면. 여기에서 중요한 점은 정규 표현식 엔진이 어떤 시점에서도 역방향으로 (예를 들어, 한 문자 삭제) 선행 검사의 유효성을 검사 할 수 있는지 확인하는 것입니다. 이를 수행하는 다른 방법이 있습니다 (예 :
possessive quantifiers). 정상적인 역 추적 프로세스에서 일치하는 토큰을 포기하지 않지만 표준 .NET 엔진은 소유욕 일치를 지원하지 않습니다. 동일한 방식으로 작동하지만 한정 기호 대신 그룹을 사용하는 원자 그룹을 지원합니다. 원자 그룹에있는 태그의 전체 열기를 래핑했습니다 (
here). (
(?> ...)
) 당신은 어떻게 태그를 포맷해야한다고위한 당신의 자신의 정규 표현식을 자유롭게 체결 할 수있어,하지만이 정규 표현식은 이미 읽을 수있는 코드에 대한 제한을 밀고, 그리고에 대해 듣는 것을 말을해야
#(?></?([a-z]?:)?[a-z]*)(?!>)#
legal xml 태그 이름은 그 방향으로 태그 이름을 더 밀어 넣을 것입니다. 그럼에도 불구하고, 이것이 오류에 대해 밝히는 데 도움이되기를 바랍니다.
정규식은 적합하지 않습니다. XML 파서/유효성 검사기를 사용해야합니다. – Oded
하나의 정규 표현식으로 모든 가능성을 다룰 수는 없습니다. Oded의 제안을 따르는 것이 좋습니다. – m0skit0
많은 가능성이 있다고 생각하지 않습니다. 이 태그는 내가 관심있는 태그 종류입니다. [a-zA-Z0-9], <[a-zA-Z0-9, a-zA-Z0-9] : [a-zA -Z0-9]. 그게 내가 원하는 전부 야. –