2012-07-26 60 views
0

我有一個像「1 + N。鼠標2 n的字符串。掃描儀。我要尋找的正則表達式中提取單個事件。誰能幫幫我?正則表達式開始與數

+4

?‘個別事件’請告訴我們 – 2012-07-26 13:09:57

+0

你的問題是不是很清楚;你想從這個字符串中提取什麼? – Shai 2012-07-26 13:10:12

+0

單獨出現什麼?並且@ 0xc0de說:你試過了什麼? – 2012-07-26 13:10:22

回答

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 
+0

更確切地說,它匹配從*號*(無符號整數)直到下一個。 – 2012-07-26 13:31:12

+0

確實,澄清。 – Joey 2012-07-26 13:32:06

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

我假設你有串由一個數字後面的「N組成的一個或多個組。 」而一個對象,並要提取每個對象和它的出現下面是基於此格式的例子:

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 
+0

感謝大家:) – 2012-07-26 13:34:10