0

File.ReadAllText から取得した次の文字列があります。

6   11 rows processed

ご覧のとおり、このドキュメントには行番号を指定する整数が常にあります。私が興味を持っているのは、その後に続く整数と「処理された行」という言葉です。したがって、この場合、部分文字列「11 行処理済み」のみに関心があります。

したがって、各行は整数と空白で始まることを知っているので、それに続く整数と「処理された行」という単語を分離し、それを文字列自体に返すことができる必要があります。

これは Regex で簡単にできると言われていますが、これまでのところ、それを構築する方法についてはかすかな手がかりがありません。

4

5 に答える 5

5

これには正規表現は必要ありません。空白で分割するだけです:

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

char []ここでは、パラメータとして空の配列を渡すと、String.Splitすべての空白で分割されるという事実を使用しています。

于 2012-04-16T20:46:15.500 に答える
2

これはあなたが必要とするもののために働くはずです:

\d+(.*)

これは1つ以上の数字(\d+)を検索し、その後すべてをグループに入れます。

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

ただし、Jasonは、分割関数を使用するだけでよいという点で正しいです。

于 2012-04-16T20:46:04.590 に答える
1

正規表現を使用する必要がある場合は、次のようになります。

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

正規表現は行の先頭から一致します。最初にスペースがある場合は、次に数字、さらにスペースが続きます。最後に残りの行を抽出し、結果として返します。

于 2012-04-16T20:58:49.907 に答える
1

Regex.Replace()これは、次の正規表現を使用して簡単に実行できます...

^\d+\s+

したがって、次のようになります。

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

\d基本的に、最初の数字とそれに続く空白をトリミングするだけです\s

于 2012-04-16T20:55:14.537 に答える
0

PHP での例 (C# 正規表現は互換性があるはずです):

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

echo $out[1];

私があなたの要点をつかんだことを願っています。

于 2012-04-16T20:50:26.463 に答える