正则表达式隔离特定子字符串

时间:2012-04-16 20:43:00

标签: c# regex

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

6   11 rows processed

正如您所看到的,总是有一个整数来指定本文档中的行号。我感兴趣的是它之后的整数和“行处理”字样。所以在这种情况下,我只对子串“11行处理”感兴趣。

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

我被告知这对Regex来说很容易,但到目前为止,我还没有最简单的线索如何构建它。

5 个答案:

答案 0 :(得分:5)

您不需要正则表达式。只是拆分空白:

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

在这里,我使用的事实是,如果将一个空数组作为char []参数传递给String.Split,它会在所有空格上分割。

答案 1 :(得分:2)

这应该适合您的需要:

\d+(.*)

这会搜索一个或多个数字(\d+)然后将所有内容放入一个组中:

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

然而,杰森是正确的,你只需要使用分割功能

答案 2 :(得分:1)

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

^\d+\s+

所以它是这样的:

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

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

答案 3 :(得分:1)

如果您需要使用正则表达式,它将是这样的:

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

正则表达式从行开始匹配:第一个空格(如果有),然后是数字,然后是更多空格。最后它提取剩余的行并将其作为结果返回。

答案 4 :(得分:0)

PHP中的示例(C#正则表达式应兼容):

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

echo $out[1];

我希望我能抓住你的观点。