我有一个像“1 n。鼠标2 n。扫描仪”的字符串。我正在寻找一个能够提取个别事件的正则表达式。谁可以帮助我?
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分: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