2017-10-27 20 views
3

Visual Basic에서 태그 사이에 텍스트를 가져 오려고하지만 태그도 캡처됩니다.<TAGs> 안에 텍스트를 캡처하는 방법, 결과에서 태그를 제외 하시겠습니까?

Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim pattern As String = "<tag>(.+?)<\/tag>" 
    Dim text As String = "Other Text <tag>Captured Text</tag> Other Text" 
    Dim capture As Match = Regex.Match(text, pattern) 
    MsgBox(capture.Value) 
End Sub 

결과를 메시지 상자의 "캡처 된 텍스트"로보고 싶습니다.

그러나 결과는 "캡처 된 텍스트 ...."와 같이 앞뒤의 두 태그로 나타납니다.

내 코드가 잘못 되었나요?

MsgBox(capture.Groups(1).Value) 

사용 패턴은 이스케이프 괄호 쌍으로 정의 된 캡처 그룹을 포함하고, 그 부분은 일부 메모리 버퍼 내에서 캡처 한 값을 저장하는 정규식 엔진을 만드는 :

답변

3

당신은 그룹 1 값에 액세스해야 . 캡쳐 그룹과 같은 많은 메모리 버퍼와 전체 일치 값을 보유하는 인덱스 0을 가진 그룹이 있습니다. 그룹 1 값에 액세스해야합니다.

캡처가 그룹 스택에 저장된 값이고 Regex.Match이 모든 그룹 및 캡처 값과 일부 정보가 포함 된 Match 개체를 반환하기 때문에 capture 변수 이름이 오도 된 것입니다.

+0

예, 그룹 (1)은 해결책입니다. 정말 고맙습니다. – John

+0

@John Glad 그것이 당신을 위해 일했습니다. 답변을 수락하는 것을 고려해보십시오 ([SO 답변 수락 방법] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) 참조). 내 대답이 도움이 될 경우 upvoting 당신은 ([스택 오버 플로우에 대해 어떻게 upvote 하는가?] (http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow) 참조). –