我有一个我从File.ReadAllText中检索到的字符串:
6 11 rows processed
正如您所看到的,总是有一个整数来指定本文档中的行号。我感兴趣的是它之后的整数和“行处理”字样。所以在这种情况下,我只对子串“11行处理”感兴趣。
因此,知道每一行都以一个整数开始,然后是一些空格,我需要能够隔离它后面的整数和“处理过的行”这个词并将其自身返回给字符串。
我被告知这对Regex来说很容易,但到目前为止,我还没有最简单的线索如何构建它。
答案 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];
我希望我能抓住你的观点。