2016-06-14 5 views
0

: 문자의 좌우에서 단어를 분리하는 버튼이 필요합니다. 나는 : 전에 모든 것을 얻는 방법을 알고있다. 그러나 어떻게 내가 모두 : 이후에 도착할 수 있었느냐?Regex에서 문자를 모두 뒤쫓아

내 코드 :

TextBox1.Text = System.IO.File.ReadAllText(OpenFileDialog1.FileName) 
Dim findtext2 As String = "(.*?)(?=:)" 'Gets all before ":" 
Dim myregex2 As String = TextBox1.Text 
Dim doregex2 As MatchCollection = Regex.Matches(myregex2, findtext2) 
Dim matches2 As String = "" 
For Each match2 As Match In doregex2 
    matches2 = matches2 + match2.ToString + Environment.NewLine 
Next 
MsgBox(matches2) 

내가 Dim findtext2 As String = "(?=:)(.*?)"와 함께 다음과 같은 시도했지만 작동하지 않습니다. 당신이 당신의 문자열에 콜론이 포함 된 것을 알고있는 경우

+0

정규식 ('이 될 것입니다을 <= :) . *'하지만 @Rion은 최상의 솔루션을 제공합니다. – 4castle

+0

네, 완벽하게 작동합니다. 고마워요! –

답변

2

, 당신은 당신이 필요로하는 부분 얻을 수있는 정규 표현식 대신 String.Split() 전화를 사용할 수 있습니다?

If TextBox1.Text.Contains(":") Then 
    ' Split using the colon ' 
    Dim sections = TextBox1.Text.Split(":") 
    ' Get the first part ' 
    Dim before = sections(0) 
    ' Get the second part ' 
    Dim after = sections(1) 
End If 
+0

예, 간단한 목록 (책 : 연필)으로 작동합니다. 전자 메일 목록 ([email protected] : 암호)을 사용하여이 작업을 시도했으며 "암호"를 얻을 수있을뿐만 아니라 암호없이 다음 줄에 전자 메일을 보냅니다. 어떤 아이디어? –

+0

각 행의 내용을 서로 독립적으로 사용할 계획이라면'File.ReadAllLines()'메서드를 사용하는 것이 좋습니다. 그런 다음 각 행을 반복하고 내용을 파악할 수 있습니다. –

+0

그래, 그게 효과가있을 것이라고 생각하지만 훨씬 간단합니다 (적어도 나를 위해) 정규식'(? <= :). *'. 아이디어를 가져 주셔서 감사합니다! –

관련 문제