正则表达式仅从字符串中获取NUMBER


71

我从XML接收到“ 7+”或“ 5+”或“ +5”,并且只想使用Regex从字符串中提取数字。例如Regex.Match()函数

        stringThatHaveCharacters = stringThatHaveCharacters.Trim();
        Match m = Regex.Match(stringThatHaveCharacters, "WHAT I USE HERE");
        int number = Convert.ToInt32(m.Value);
        return number;

Answers:


81

\d+

\d代表+一个或多个数字。如果您也想捕获负数,则可以使用-?\d+

请注意,作为字符串,它应在C#中表示为"\\d+",或@"\d+"


130

上面的答案很棒。如果您需要从不连续的字符串中解析所有数字,则以下内容可能会有所帮助:

string input = "1-205-330-2342";
string result = Regex.Replace(input, @"[^\d]", "");
Console.WriteLine(result); // >> 12053302342

Regex.Replace(input,@“ \ D”,“”);
TNT

5

无论是[0-9]\d1就足够了,如果你只需要一个单一的数字。+如果需要更多,请追加。


1个语义略有不同的\d潜在匹配任何在任何脚本十进制数字,在那里,以10进制数字。


请定义要在Regex.Match函数中使用的确切正则表达式。...因为在Regex(SYNTAX)中效果不佳
Muhammad Adnan

对于单个数字,您不需要正则表达式:char digit = s.First(Char.IsDigit);。我会将其添加到我的答案中,但我认为情况并非如此。
科比

@Kobi:尽管如此,仍然需要对字符串进行显式迭代。大多数选择使用正则表达式的人都不想这样做:-)
Joey
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.