【发布时间】:2018-03-24 15:07:57
【问题描述】:
我试图从 HML 链接中获取版本号。
以这个为例
firefox-10.0.2.bundle
我已经把- 之后的所有东西都用
string versionNum = name.Split('-').Last();
versionNum = Regex.Replace(versionNum, "[^0-9.]", "");
它给你一个输出
10.0.2
但是,如果链接是这样的
firefox-10.0.2.source.tar.bz2
输出看起来像
10.0.2...2
我怎样才能让它在第三个 . 之后砍掉所有东西?或者我可以做到这一点,以便在检测到第一个字母时将其删除以及随后的所有内容?
【问题讨论】:
-
您可以在一个正则表达式中完成所有操作,使用捕获组
(...)提取/捕获您想要的数字。在线正则表达式服务(例如debuggex.com、regex101.com、regexstorm.net/tester)可以帮助您针对任何测试字符串构建和测试您的正则表达式(这比 C# 代码中的反复试验更好、更容易) -
使用 Match 方法,而不是 Replace 方法。
-
可能性 a) 使用带有偏移量的 substring()。可能性 b) 将结果字符串再次拆分为 '.'只取你需要的东西。
-
@sublimeaces 我强烈建议您查看我的答案,以更好地了解更高级和更强大的正则表达式,如果不接受它作为更好的答案:)