2012-08-01 124 views
1

我想創建一個正則表達式接受某種格式的命令。所述圖案如下:創建正則表達式的麻煩

可以開始與一個$並且具有以下兩個值0-9,AF,AF(即:$ 00 - $ FF) 或 可以是除了任何值「& <>'/ 「

*如果該值以$開始下一兩個值需要從00-FF

到目前爲止,我有這個

Regex correctValue = new Regex("($[0-9a-fA-F][0-9a-fA-F])"); 

有效的十六進制值之後的任何幫助,將不勝感激!

+0

我不明白你的問題的這一部分:_可以是除「&<>'/」_以外的任何值。你的意思是它應該匹配任何不在該列表中的單個字符? – 2012-08-01 01:02:14

回答

3

你只需要在你的「$」加上「\」符號,它的工作原理:

 string input = "$00"; 

     Match m = Regex.Match(input, @"^\$[0-9a-fA-F][0-9a-fA-F]$"); 
     if (m.Success) 
     { 
      foreach (Group g in m.Groups) 
       Console.WriteLine(g.Value); 
     } 
     else 
      Console.WriteLine("Didn't match"); 
+0

好吧,我還加了^和$來標記正則表達式的開始和結束 – horgh 2012-08-01 02:09:29

2

如果我正確地關注你,你要找的最終結果是不在列表「& <>'/」中的任何值,因爲任何$和兩個字母數字字符的組合也不會是在那個列表中。這樣,就可以使你的表達:

Regex correctValue = new Regex("[^&<>'/]"); 

更新:但是爲了以防萬一,你需要知道如何正確地匹配$ 00 - $ FF,這會做的伎倆:

Regex correctValue = new Regex("\$[0-9A-Fa-f]{2}"); 
2

正則表達式中使用$錨斷言,並表示:

匹配必須發生在字符串的末尾或在行或字符串末尾的\ n之前。

嘗試使用[$](Character Class for single character)或\$(Character Escape)。