我正在使用以下方法删除所有非数字和非十进制值:
Regex.Replace("A1B2C3.D4E5F6.G7H8I9", @"[^-?\d+\.]", "");
输出:123.456.789
问题是重复的小数。我需要删除除第一个小数之外的所有内容。
所以输出变成:123.456789
我找到了模式"\.(?=.*\.)"
,但它输出 123456.789。这是最后一个小数而不是第一个。
任何人都可以将这两种模式组合成一个模式,同时删除第一个小数点后的重复小数点吗?泰
您可以进行正则表达式比较,然后在小数位上拆分字符串
string newval = Regex.Replace("A1B2C3.D4E5F6.G7H8I9", @"[^-?\d+\.]", "");
string[] tempsplit = newval.Split('.');
然后通过放置一个“。”将它们重新组合在一起。在 tempsplit[0] 和 tempsplit[1] 之间,然后是数组中的其余字符串。
您可以.
通过替换以下内容来替换除第一个之外的所有内容:
(?<=\.[^.]*)\.
您可以轻松地将其集成到您的正则表达式中:
[^-?\d+\.]|(?<=\.[^.]*)\.
如果前面有另一个点,这只会匹配一个点。请注意,此正则表达式不适用于大多数其他正则表达式引擎,因为它使用可变宽度的lookbehind。