正则表达式来隔离特定的子字符串
本文关键字:字符串 隔离 正则表达式 | 更新日期: 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];
我希望我抓住了你的意思。