正则表达式搜索字符串" $ 12,56,45"使用c#

时间:2013-12-20 12:51:10

标签: c# regex

我希望它在c#中使用Regex搜索"$12,56,450"之类的字符串,但它与字符串不匹配

这是我的代码:

string input="Total earn for the year $12,56,450";
string pattern = @"\b(?mi)($12,56,450)\b";

Regex regex = new Regex(pattern);

  if (regex.Match(input).Success)
  {
     return true;
  }

2 个答案:

答案 0 :(得分:1)

此正则表达式将完成此任务,(?mi)(\$\d{2},\d{2},\d{3}),此处为Regex 101 to prove it

现在让我们分解一下:

  • \$与字符串
  • 开头的文字$相匹配
  • \d{2}匹配任意两位数字
  • ,与文字,
  • 相匹配
  • \d{2}匹配任意两位数字
  • ,与文字,
  • 相匹配
  • \d{3}匹配任意三位数字

现在,为了演示的目的,我删除了单词boundary \b,但我也非常有信心你不需要它们。请注意,对于这种有限的字符串匹配,字边界通常不是必需的。 Consider their definition

  • 在字符串中的第一个字符之前,如果第一个字符是单词字符。
  • 在字符串中的最后一个字符之后,如果最后一个字符是单词字符。
  • 字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。

答案 1 :(得分:0)

您需要转义$和其他一些特殊的正则表达式字符。

试试这个@“\ b(?mi)(\ $ 12,56,450)\ b”;

如果你想要你可以使用\ d匹配一个数字,并使用\ d {2,3}匹配一个大小为2或3的数字。