2015-07-10 101 views
-1

我試圖從10:131186;中提取數字並獲得10131186而沒有使用:;C#正則表達式從數字中提取某些數字

什麼是我需要創建的正則表達式模式?

var input = "10:131186;"; 
string pattern = ":(.*);"; 
Match m = Regex.Match(input, pattern); 
Console.WriteLine(m.Value); 

與上面的代碼,我得到:131186;代替10121186

+0

使用string.Replace()比正則表達式... –

回答

0

剛打印組索引1

var input = "10:131186;"; 
string pattern = ":(.*);"; 
Match m = Regex.Match(input, pattern); 
Console.WriteLine(m.Value[1]); 

或使用斷言。

var input = "10:131186;"; 
string pattern = "(?<=:).*?(?=;)"; 
Match m = Regex.Match(input, pattern); 
Console.WriteLine(m.Value); 
+0

謝謝:)它的工作。 – user2329418

+0

接受5分鐘後,如果這個工程。 –

0

您可以使用模式\\d+字符串匹配中的數字和它們連接爲一個字符串。

using System; 
using System.Text; 
using System.Text.RegularExpressions; 

public class Program 
{ 
    public static void Main() 
    { 
     string input = "10:131186;"; 
     MatchCollection mCol = Regex.Matches(input, "\\d+"); 

     StringBuilder sb = new StringBuilder(); 
     foreach (Match m in mCol) 
     { 
      sb.Append(m.Value); 
     } 

     Console.WriteLine(sb); 
    } 
} 

結果:

10131186 

Demo

2

爲什麼你需要使用正則表達式。這比使用string.Replace方法

string input = "10:131186;"; 
input = input.Replace(":", ""); 
input = input.Replace(";", ""); 
Console.WriteLine(input); 
1

您可以嘗試使用Regex.Replace慢:

var input = "10:131186;"; 
string pattern = @"(\d+):(\d+);"; 
string res = Regex.Replace(input, pattern, "$1$2"); 
Console.WriteLine(res); 

,您還可以使用SplitJoin

var input = "10:131186;"; 
Console.WriteLine(string.Join("", input.Split (new char[] { ':', ';' }, StringSplitOptions.RemoveEmptyEntries))); 
1

請試試這個..

 string input = "10:131186;"; 
     input = input.Replace(":", String.Empty).Replace(";", string.Empty); 
相關問題