C#Regex从数字中提取某些数字

时间:2015-07-10 02:25:59

标签: c# regex

我正在尝试从10131186中提取数字,并在没有:;的情况下获取var input = "10:131186;"; string pattern = ":(.*);"; Match m = Regex.Match(input, pattern); Console.WriteLine(m.Value);

我需要创建什么样的正则表达式?

:131186;

使用上面的代码,我得到10121186而不是total_costs = hosting + design + phones

5 个答案:

答案 0 :(得分:2)

为什么需要使用Regex。它比使用string.Replace方法

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

答案 1 :(得分:1)

您可以尝试使用Regex.Replace

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

您也可以Split使用Join

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

答案 2 :(得分:1)

请试试这个..

        string input = "10:131186;";
        input = input.Replace(":", String.Empty).Replace(";", string.Empty);

答案 3 :(得分: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);

答案 4 :(得分: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