0

我有这个从 File.ReadAllText 中检索到的字符串:

6   11 rows processed

如您所见,在本文档中始终有一个整数指定行号。我感兴趣的是它后面的整数和“处理的行”字样。所以在这种情况下,我只对子字符串“11 rows processed”感兴趣。

所以,知道每一行都以一个整数开头,然后是一些空格,我需要能够隔离它后面的整数和“处理的行”这个词,并将其返回到一个字符串本身。

有人告诉我,这很容易用 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

Regex.Replace()使用以下正则表达式可以轻松完成此操作...

^\d+\s+

所以它会是这样的:

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

基本上你只是修剪第一个数字\d和后面的空格\s

于 2012-04-16T20:55:14.537 回答
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 回答
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 回答