C# 正则表达式,仅返回数字
本文关键字:返回 数字 正则表达式 | 更新日期: 2023-09-27 17:56:47
假设我的源代码中有以下内容,并且只想返回字符串中的数字:
源代码来自一个网站,仅供参考,我已经解析了它,以便它进入程序,但是我需要实际解析这些数字以返回我想要的内容。 只是有一段时间试图弄清楚它:(
如: 13|100|0;
我该如何编写此正则表达式?
var cData = new Array(
"g;13|g;100|g;0",
"g;40|g;100|g;1.37",
"h;43|h;100|h;0",
"h;27|h;100|h;0",
"i;34|i;100|i;0",
"i;39|i;100|i;0",
);
不确定你在这里真的需要正则表达式。
var str = "g;13|g;100|g;0";
str = str.Replace("g;", "");
会给你"13|100|0"
.
或者对斯皮农的回答略有改进:
// '- included in case numbers can be negative. Leave it out if not.
Regex.Replace("g;13|g;100|g;0", "[^0-9'|'.'-]", "");
或者使用拆分和加入的选项:
String.Join("|", "g;13|g;100|g;0".Split('|').Select(pipe => pipe.Split(';')[1]));
我会使用这样的东西,所以你只保留数字和分隔符:
Regex.Replace("g;13|g;100|g;0", "[^0-9|]", "");
在这种情况下,
正则表达式可能矫枉过正。鉴于|
和;
的统一划分,我建议String.Split()
.然后,您可以再次拆分或使用String.Replace()
来摆脱多余的字符(即 g;
)。
看起来你有很多解决方案,但我会再提出一个解决方案,如果你愿意,你可以在比赛中迭代每个组,以获得数字。
Regex regexObj = new Regex(@"'w;(['d|.]+)'|?");
Match matchResults = regexObj.Match("g;13|g;100|g;0");
if( matchResults.IsMatch )
{
for (int i = 1; i < matchResults.Groups.Count; i++)
{
Group groupObj = matchResults.Groups[i];
if (groupObj.Success)
{
//groupObj.Value will be the number you want
}
}
}
我希望这是有帮助的。