【问题标题】:C# Regex remove everything except \d+, one, nine and decimal pointC# Regex 删除除 \d+、一、九和小数点以外的所有内容
【发布时间】:2014-08-15 07:14:19
【问题描述】:

我怎么能做这样的事情。

new Regex("([^\d+]|[^one]|[^nine]|[^,])").Replace("Fi10An,fONEy,Onineo", "");

我会得到这个:

10,one,nine

但我会得到一个空字符串,上面有错误的正则表达式。

提前感谢您!

【问题讨论】:

  • 你有一个严重的误解:[]是一个字符类,它只匹配单个字符。
  • , 这里的小数点是什么逻辑?您将它用作列表项分隔符,不是吗?

标签: c# regex regex-negation


【解决方案1】:

尝试做相反的事情:匹配你需要的,然后从字符串中取出它。例如:

Regex.Matches("Fi10An,fONEy,Onineo", @"(\d+|one|nine|,)", RegexOptions.IgnoreCase)

然后将匹配项组合成一个字符串。这将是最简单、最清晰的解决方案。

【讨论】:

  • 是的,它是正确的,但用正则表达式可能吗? :) 我会学到一些东西。
  • @PatrickB,好吧,也许你可以发明一些正则表达式来进行替换,但我不确定这个正则表达式和替换字符串是否简单,此外,是否可以保留单词的顺序并保持输入字符串的动态长度:)
猜你喜欢
  • 2017-10-11
  • 2015-05-08
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多