0

我有一个字符串,如“1 n。鼠标 2 n。扫描仪”。我正在寻找一个正则表达式来提取各个事件。谁能帮助我?

4

3 回答 3

2

\d+\D+将匹配从数字开始到下一位的所有内容。然后,您可以使用Regex.Matches来查找该类型的所有匹配项。

快速 PowerShell 测试:

PS> [regex]::matches('1 n. Of mouse 2 n. Of scanners', '\d+\D+') | select -expand Value
1 n. Of mouse
2 n. Of scanners
于 2012-07-26T13:17:43.923 回答
1

我假设您的字符串有一个或多个组,这些组由一个数字组成,后跟“n. of”和一个对象,并且您想要提取每个对象及其出现。以下是基于此格式的示例:

MatchCollection matches = Regex.Matches(
    "1 n. Of mouse 2 n. of scanners",
    @"(?<num>\d+)\s+n\.\s+of\s+(?<obj>\w+)",
    RegexOptions.IgnoreCase);

foreach(Match m in matches) {
    Console.WriteLine("Match found:");
    Console.WriteLine("\tCount: {0}", m.Groups["num"]);
    Console.WriteLine("\tObject: {0}\n", m.Groups["obj"]);
}

及其输出:

Match found:
  Count: 1
  Object: mouse

Match found:
  Count: 2
  Object: scanners
于 2012-07-26T13:31:45.463 回答
0

尝试使用此代码

        var value = "1 n. Of mouse 2 n. Of scanners";
        var result =  value.Split().Select(p => Regex.Match(p, @"^\d+$").Value).Where(p => ! p.Equals(string.Empty)).ToList();

结果是

1

2

于 2012-07-26T13:22:16.017 回答