正则表达式仅从字符串中获取 NUMBER
Posted
技术标签:
【中文标题】正则表达式仅从字符串中获取 NUMBER【英文标题】:Regex to get NUMBER only from String 【发布时间】: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;
【问题讨论】:
【参考方案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]
或 \d
1 就足够了。如果您需要更多,请附加 +
。
1 语义略有不同,\d
可能匹配任何使用十进制数字的脚本中的任何十进制数字。
【讨论】:
请定义准确的正则表达式以在 Regex.Match 函数中使用....因为我不擅长正则表达式(语法) 对于单个数字,您不需要正则表达式:char digit = s.First(Char.IsDigit);
。我会将其添加到我的答案中,但我认为这里不是这种情况。
@Kobi:不过,这仍然需要对字符串进行显式迭代。大多数选择使用正则表达式的人都不想这样做:-)以上是关于正则表达式仅从字符串中获取 NUMBER的主要内容,如果未能解决你的问题,请参考以下文章