2017-05-19 15 views
0

.の後の数値を正しい正規表現で検索しようとしています。たとえば、最初の行が返され、配列が1 1 1 1 1の場合、2番目の行は2 1 0 1 2を返します。私はこれを達成するための正しい正規表現を理解しているようではありません。どんな助けもありがとう。文字列内のピリオドの後に数字を取得するRegex

line = 0.1, 1.1, 2.1, 3.1, 4.1   // payline 0 
line = 0.2, 1.1, 2.0, 3.1, 4.2   // payline 1 

これまでのところ、私は以下のコードを持っていますが、代わりにすべての数字をスティールに返します。それはにドットを配置することなく、ドットの後1+数字と一致する

@"(?<=\.)\d+" 

:例えば、最初の行は、あなたが後読みベースの正規表現のソリューションを使用することができ0 1 1 1 2 1 3 1 4 1 0と第二リターン0 2 1 1 2 0 3 1 4 2 1

foreach (var line in Paylines) 
{ 
    int[] lines = (from Match m in Regex.Matches(line.ToString(), @"\d+") 
            select int.Parse(m.Value)).ToArray(); 

    foreach (var x in lines) 
    { 
     Console.WriteLine(x.ToString());   
    } 
} 
+0

String.Splitを使用しますか? –

+0

ありがとうございました。私はそのルートに行くことを考えましたが、代わりに正規表現を使用してそれを解決したい – Eni

+0

\。(? \ d +?) –

答えて

4

を返します。一致する値。

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

C#では、あなたは

var myVals = Regex.Matches(line, @"(?<=\.)\d+", RegexOptions.ECMAScript) 
     .Cast<Match>() 
     .Select(m => int.Parse(m.Value)) 
     .ToList(); 

C# demoを参照してください使用することができます。

RegexOptions.ECMAScriptオプションは[0-9]範囲とavoid matching other Unicode digitsでのみマッチASCII数字に\dのために渡されます。

関連する問題