2013-12-20 88 views
1

我想它来搜索字符串像在C#中使用正则表达式"$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

你应该逃避'$'符号,首先一个数字;在它前面使用'\ b'可能没有意义,其次(因为'$'是非单词字符)。最后,这里有'mi'修饰符的含义是什么? – raina77ow

+0

'我希望它搜索字符串像“$ 12,56450”'你的意思是确切的字符串或什么..? –

+0

我想搜索整个词这就是为什么我使用“英里”,但我不知道哪个是工作或不 – user2463266

回答

1

This Regex will do the job,(?mi)(\$\d{2},\d{2},\d{3}),and here's a Regex 101 to prove it

现在,让我们打破它一点:

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

现在,为示范的目的,我删除了字边界,\b比赛,但我也很有信心,你并不需要他们无论如何。看,字边界对于这样的有限字符串匹配通常是不必要的。 Consider their definition

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

“证明”是一个强词汇:p – Rawling

+0

@Rawling,为什么是的。有更喜欢的人吗? :D –

+1

Nah,你有我的+1无论如何:) – Rawling

0

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

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

,如果你愿意,你可以使用\ d匹配一个数字,然后使用\ d {2,3},以配合大小2或3

相关问题