2012-04-16 7 views
0

を分離するため、私はFile.ReadAllTextから取得したこの文字列を持っている:正規表現は、特定のサブ

6 11 rows processed 

あなたはこの文書の行数を指定する整数が常にある見ることができるように。私が興味を持っているのは、それに続く整数と「行が処理された」という言葉です。この場合、私はサブストリング "11 rows processed"にしか興味がありません。

したがって、各行は整数で始まり、次に空白で始まることがわかっているので、それに続く整数と「行の処理」を分離して文字列に戻す必要があります。

これはRegexとはやりやすいと言われていますが、これまでのところ私はそれを構築する方法を知っていませんでした。

答えて

2

これは、あなたが必要なもののために働く必要があります。

\d+(.*) 

これは、1桁以上(\d+)を検索し、それがグループ内のその後のすべてを置く:

. = any character 
* = repeater (zero or more of the preceding value (which is any character in the above 
() = grouping 

しかし、ジェイソンは、スプリット関数を使用するだけでよいという点では正しくありません。

+0

どのように動作するのですか? – gdoron

+0

真。あなたが正しいと思います。私はこれがRegexへの簡単な入門であることを望みました。 –

+0

@fullNelsonもしあなたが本当に望むなら、自由に使ってください:-p。常にupvotes /受け入れられた答えは、SOの感謝の手段です:D –

5

正規表現は必要ありません。ただ、ホワイトスペースで分割:

var fields = s.Split(new char[0], StringSplitOptions.RemoveEmptyEntries); 
Console.WriteLine(String.Join(" ", fields.Skip(1)); 

をここで、私はあなたがString.Splitchar []パラメータとして空の配列を渡すと、それはすべての空白で分割しているという事実を使用しています。 PHPで

+0

ありがとう。私はこの場合、regexを使いこなすために正規表現を使いたいと思っていました。 +1は.NET用です。他の人にも役立つはずです。 –

0

例(C#の正規表現が適合するものでなければならない):

$line = "6 11 rows processed"; 
$resp = preg_match("/[0-9]+\s+(.*)/",$line,$out); 

echo $out[1]; 

私は私はあなたのポイントをcatched願っています。

1

これは、だから、このようなものになるだろう...次の正規表現を使用してRegex.Replace()で簡単に

^\d+\s+ 

が行われます。基本的にはあなただけの最初の数字をトリミングしている

return Regex.Replace(text, @"^\d+\s+", ""); 

\dとそれに続く空白\sです。あなたは正規表現を使用する必要がある場合

1

それはこのようになります:

string result = null; 
Match match = Regex.Match(row, @"^\s*\d+\s*(.*)"); 
if (match.Success) 
    result = match.Groups[1].Value; 

正規表現は、行の先頭から一致した:最初のスペースがあれば、その数字と、より多くのスペース。最後に、残りの行を抽出し、結果として返します。

+0

Regexを使用するための.NETコードの一部を示していただき、ありがとうございます。それに対して+1。 –