【问题标题】:Razor Regex Replace All But Numbers and One Dash BetweenRazor Regex 替换除数字和一个破折号之外的所有内容
【发布时间】:2015-07-26 10:46:44
【问题描述】:

我想包含一个数字,后跟一个破折号,然后是另一个数字。

@Regex.Replace(@a, @"[^0-9+-]", "")

...但这包括所有破折号。

像这样替换一个字符串:

Text (Characters!+-) 11-20 text-dashes-after-not counted

变得公正:

11-20

http://regexr.com/3b0k7

问题是它允许任意数量的破折号,如果它在数字之间,我只想包含一个——在第一个数字、破折号和第二个数字之间有任意数量的空格。

【问题讨论】:

  • 为什么不改用Regex.Match

标签: regex razor model-view-controller


【解决方案1】:

你可以使用这个正则表达式:

@Regex.Replace(@a, @"^.*?\b(\d+\s*-\s*\d+)\b.*", "$1")

【讨论】:

  • 这行得通,但是您对 Regex.Replace 和 Regex.Match 之间的区别有何看法?
  • Replace 将在一个步骤中给出您想要的文本,但match 将返回一个您需要稍后评估的数组。
【解决方案2】:

这基本上就像 Amit 的建议,但您也可以使用命名组来捕获它。

Regex regex = new Regex(@"(?<test>\d+-\d+)");

Match match = regex.Match(sample);

if (match.Success)
    Console.WriteLine(match.Groups["test"].Value);

【讨论】:

  • 这是一种有趣的方法,但我正在寻找更紧凑和简洁的方法。谢谢
  • 我选择了@anubhava 解决方案,因为它可以在一个步骤中很好地包含。
猜你喜欢
  • 2012-07-31
  • 2013-12-26
  • 2011-11-12
  • 1970-01-01
  • 2011-08-28
  • 2018-08-02
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
相关资源
最近更新 更多