gpt4 book ai didi

.net - 使用REGEX查找除字符的第一个出现以外的所有字符

转载 作者:行者123 更新时间:2023-12-04 04:08:06 27 4
gpt4 key购买 nike

我正在构建.Net应用程序,我需要从字符串中去除任何非十进制字符(不包括第一个“。”)。本质上,我正在清理用户输入以强制使用实数结果。

到目前为止,我一直在使用在线RegEx工具来尝试一次完成此任务,但是我并没有走得太远。

我希望做到这一点:

asd123.asd123.123.123 = 123.123123123

不幸的是,我只能设法达到
asd123.asd123.123.123 = 123.123.123.123

通过使用此代码。
System.Text.RegularExpressions.Regex.Replace(str, "[^\.|\d]*", "")

但是我一直试图删除除第一个小数点以外的所有内容。

可以一次完成吗?
有更好的方法吗?

最佳答案

这可以在单个正则表达式中完成,至少在.NET中,它支持lookbehind assertions内部的无限重复:

resultString = Regex.Replace(subjectString, @"(?<!^[^.]*)\.|[^\d.]", "");

说明:
(?<!^[^.]*) # Either match (as long as there is at least one dot before it)
\. # a dot
| # or
[^\d.] # any characters except digits or dots.
(?<!^[^.]*)的意思是:断言不可能匹配从输入字符串的开头开始且仅由点以外的字符组成的字符串。对于第一个点之后的所有点,此条件均成立。

关于.net - 使用REGEX查找除字符的第一个出现以外的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4287031/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com