2016-06-14 3 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]: password), и он получит «пароль», а также электронную почту на следующей строке (без пароля). Есть идеи? –

+0

Возможно, вы захотите рассмотреть метод 'File.ReadAllLines()', если вы планируете, что контент в каждой строке не зависит друг от друга. Затем вы можете просто перебирать каждую строку и захватывать содержимое, если это имеет смысл. –

+0

Да, я думаю, что это сработает, но это намного проще (по крайней мере для меня) с регулярным выражением '(? <=:). *'. Спасибо за идею! –

Смежные вопросы