【问题标题】:Stop regex from removing decimal points停止正则表达式删除小数点
【发布时间】:2014-10-30 08:06:31
【问题描述】:

在我的等式中,我试图删除出现在我在正则表达式代码中提到的特定单词之后的第一个单词。例如:

在句子中:

你好,我叫罗杰

我正在用这个正则表达式提取单词“Roger”:

Regex reg3 = new Regex("is\\s\\w+");
MatchCollection match3 = reg3.Matches(result);
foreach (Match match in match3)
{
    var val = match.Value;
    val = val.Replace("is", "");
    val = val.Trim();
}

但在这样的情况下:

我的答案是 3.05

当我应用相同的正则表达式时,我会得到这样的结果:

3

那是因为正则表达式删除了“是”之后的所有字符,我该如何更改正则表达式,以便在我上面提到的情况下,它保持 decimal 数字不变并打印 3.05?

【问题讨论】:

标签: c# regex replace


【解决方案1】:

它在打印第一个数字后停止,因为下面的. 不是单词字符。要匹配文字点,您需要将\w. 放在character class 中。

Regex reg3 = new Regex("is\\s[.\\w]+");

Regex reg3 = new Regex(@"is\s[.\w]+");

【讨论】:

  • 匹配所有非空格字符@"is\s\S+"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
  • 2014-10-29
  • 1970-01-01
  • 2019-12-07
  • 2021-10-11
  • 2018-08-13
相关资源
最近更新 更多