2016-06-14 22 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

ええ、それはうまくいくと思いますが、正規表現 '(?<=:)。* 'を使って(少なくとも私にとっては)もっと簡単です。アイデアありがとう! –

関連する問題