【问题标题】:Regex to get NUMBER only from String正则表达式仅从字符串中获取 NUMBER
【发布时间】:2011-06-15 02:27:22
【问题描述】:

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

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

【问题讨论】:

    标签: c# regex


    【解决方案1】:

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

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

    【讨论】:

    • Regex.Replace(input, @"\D", "");
    【解决方案2】:

    \d+

    \d 代表任何数字,+ 代表一个或多个。如果你也想捕捉负数,你可以使用-?\d+

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

    【讨论】:

      【解决方案3】:

      如果您只需要一个数字,[0-9]\d1 就足够了。如果您需要更多,请附加 +


      1 语义略有不同,\d 可能匹配任何使用十进制数字的脚本中的任何十进制数字。

      【讨论】:

      • 请定义准确的正则表达式以在 Regex.Match 函数中使用....因为我不擅长正则表达式(语法)
      • 对于单个数字,您不需要正则表达式:char digit = s.First(Char.IsDigit);。我会将其添加到我的答案中,但我认为这里不是这种情况。
      • @Kobi:不过,这仍然需要对字符串进行显式迭代。大多数选择使用正则表达式的人都不想这样做:-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 2021-09-19
      • 2014-04-09
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 2012-02-15
      相关资源
      最近更新 更多