2011-08-31 9 views
1

나는 이것을 어떻게 부여해야하는지 정말로 모르지만 정규 표현식에 대한 도움이 필요하다. 첫째, HTML이나 XML과 일치 시키려고하지 않는다는 것을 분명히하고 싶습니다. 아래의 내용은 프로그램에서 사용하는 파일 형식의 일부로, 프로그램에서 내보낼 내용을 지정합니다. 나는 또한이, 이건 내 프로그램과 일치Regex Help (again)

<n> 

어쨌든, 이름 값을 내보낼 내 프로그램을 알려줍니다 열거를 찾을 수 : 반군 계층 구조는 각각의 새로운 라인은 '태그'를 포함 그냥 없다 태그는 다음과 같습니다.

<adr:home> 

여기에는 집 주소가 지정됩니다. 나는 다음과 같은 정규식을 사용

<((?'TAG'.*):(?'SUBTAG'.*)?)?(\s+((\w+)=('|"")?(?'VALUE'.*[^'])('|"")?)?)?> 

문제는 정규식이 ADR을 분할하는 것입니다 : 나는를 추가 할 때 홈 태그 벌금을하지만 콜론이 없기 때문에 n 개의 태그를 찾기 위해 실패,하지만? 또는 a *이면 adr : home 및 유사한 태그를 분할하지 않습니다. 누구든지 도와 줄 수 있습니까? 나는 그것이 간단하다는 것을 확신한다, 이것은 단지 정규 표현식을 만드는 데있어서 처음이다. 나는 C#으로 일하고 있습니다.

+0

비 욕심 태그 캡처를 만든 ':'서브 태그 캡처로 그룹. like (? 'SUBTAG':. *)? 그런 다음 캡처 그룹에서 ':'을 제거 할 수 있습니다. – arunkumar

+0

그 중 하나가 작동하지 않는 것 같습니다. 모든 것을 TAG 그룹으로 되돌리고 SUBTAG 그룹을 비워 둡니다. – user646265

+0

TAG 그룹에 greedo도 만들어야합니다. 내 대답을 참조하십시오. –

답변

1

내가 포장 한

<((?'TAG'.*?)(?::(?'SUBTAG'.*))?)?(\s+((\w+)=('|"")?(?'VALUE'.*[^'])('|"")?)?)?> 

이 도움이됩니다 당신이 이동하면 비 캡처 그룹 라운드 서브 태그로 캡처하고 무슨 일

+0

감사합니다.이 문제가 해결 된 것으로 보입니다. – user646265

0

두 번째 태그의 일부로 콜론을 넣으면 어떨까요?

<((?'TAG'.*)(?':SUBTAG'.*)?)?(\s+((\w+)=('|"")?(?'VALUE'.*[^'])('|"")?)?)?> 
+0

아니요, 작동하지 않습니다. 틀림없이 콜론이 그룹 이름의 일부가되어서는 안됩니다. 그렇지? – user646265

1

완전히 확실하지 당신의 목표는하지만이 시도 무엇 :

(?><)(?'TAG'[^:\s>]*)(:(?'SUBTAG'[^\s>:]*))?(\s\w+=['"](?'VALUE'[^'"]*)['"])?(?>>) 

내가 테스트 C# 정규식 표현식 this site 매우 유용.

+0

이 방법은 효과가 없습니다. 프로그램에서 콜론을 읽지 않고 모든 것을 태그 그룹에 넣는 것입니다. – user646265

+0

이렇게 하시겠습니까? (정규 표현식의 두 번째 부분 무시). – TheCodeKing

+0

감사합니다. 잘 작동합니다. – user646265