C# 正则表达式

标签 c# regex

假设我有一个初始字符串,它可以包含一个整数或一个 double ,后跟一个时间刻度。例如,它可能是 5.5 小时或 30 分钟等。众所周知,我将以这种格式接收的数据没有制服,因此,例如,我可能会收到 5.5 小时这样的数据。添加句号。

我想要一种从此类字符串中提取整数或 double 的方法,但是我正在为可能包含额外的句点/句点而苦苦挣扎。通过用空格替换字母,我可以轻松地隔离数字和句号。

谁能指点一下。

谢谢。

最佳答案

\d+(?:\.\d+)?

应该符合您的标准:

\d+  # Match one or more digits
(?:  # Try to match the following group:
 \.  # a dot
 \d+ # one or more digits
)?   # End of optional group 

因此,要遍历字符串中的所有匹配项:

Regex regexObj = new Regex(@"\d+(?:\.\d+)?");
Match matchResults = regexObj.Match(subjectString);
while (matchResults.Success) {
    // matched number: matchResults.Value
    matchResults = matchResults.NextMatch();
}

显然,此正则表达式不会匹配指数表示法中的数字,例如 1.05E-6

如果你也想 catch 下面的时间刻度,那么你可以使用

(\d+(?:\.\d+)?)\s*(\w+)

现在,在一场比赛之后,matchResults.Groups[1] 将包含号码。 matchResults.Groups[2] 将包含数字后面的单词,然后您可以根据允许的单词列表检查该单词。这个词是强制性的,我。 e.如果它丢失了,整个正则表达式将失败——如果你不想那样,在末尾添加一个 ?

关于C# 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4723632/

相关文章:

sql - mysql 中 REGEXP_SUBSTR 的等价物是什么?

asp.net - iis url 重写中奇怪的正则表达式错误

javascript - DataTables 正则表达式搜索无法按预期精确匹配

c# - 安全存储密码的最佳方法

c# - 事件消息 : An unhandled access exception has occurred (IIS 7. 5,无法加载网站)

c# - 使用 c# 将 Sharepoint "list"从一个 Sharepoint 服务器 (2007) 复制到另一台服务器 (2010)

c# - 如何从 PropertyInfo 获取属性的值?

c# - RegEx提取前6到10位数字,不包括8位数字

java - 替换属性文件键中的所有空格

c# - 动态改变CSS