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

本文关键字:字符串 隔离 正则表达式 | 更新日期: 2023-09-27 18:31:23

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

6   11 rows processed

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

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

有人告诉我这很容易用正则表达式做到,但到目前为止,我还没有最微弱的线索如何构建它。

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

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

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

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

这应该适用于您的需求:

'd+(.*)

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

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

但是,Jason 是正确的,因为您只需要使用拆分函数

如果您需要使用正则表达式,它将如下所示:

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

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

可以通过使用以下正则表达式Regex.Replace()轻松完成...

^'d+'s+

所以它会是这样的:

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

基本上,您只是修剪第一个数字'd和随后的空格's

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

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

我希望我抓住了你的意思。