2016-12-05 38 views
2

正規表現分割を使用してVB.NETの別の文字列?私はから文字列を拡張した後にエラーが発生し、パターン文字列変数の論理エラーを有する イム "( - )" から "( - )(+)(/)(*)" ..。NET正規表現(正規表現)

Dim input As String = txtInput.Text 
    Dim pattern As String = "(-)(+)(/)(*)" 

    Dim substrings() As String = Regex.Split(input, pattern) 
    For Each match As String In substrings 
     lstOutput.Items.Add(match) 

私のパターン文字列変数があるとき、これは私の出力である「 - 」それは正常に動作

input: dog- 
output: dog 
     - 

マイ所望の出力(これは私が起こるしたい希望される)が、コードに問題がある...そのの後にエラーが発生しました私はこれを "( - )(+)(/)()"これも "( - )" + "" + "(/)" + "()"

Dim pattern As String = "([+/*-])" 

このパターンは一致します:あなたは文字クラスではなく、別のキャプチャgorups内部のサブパターンのシーケンスを必要とするリストボックスにテキストボックスから空白文字入力

input: dog+cat/ tree 
output: dog 
+ 
cat 
/



tree 

答えて

2
input: dog+cat/tree 
output: dog 
    + 
    cat 
    /
    tree 

をグループ1にキャプチャします(したがって、キャプチャされたすべての値は結果の配列の一部になります)。+,/,*または-である。ハイフンの位置に注意してください。文字クラスの最後の文字であるため、範囲演算子ではなく、-というリテラルとして扱われます。

regex demoを参照してください:

enter image description here

+0

Wiktor第のそれが働いたおかげでなく、どのような場合は空白文字?括弧の中に1つの空白文字を追加しましたが、出力が空白を3つの空白のように大きくしてしまいました... –

+0

先頭に空白を入れてください: '[+/* - ]' - ポイントは '-'です最後にする必要があります。 –

+0

空白文字は使えますが、空白は2文字スペースに伸びます。問題はリストボックスになければならないと思います。上記の新しい編集出力を参照してください。 –