无法创建正则表达式

时间:2012-08-01 00:46:40

标签: c# regex

我正在尝试创建一个接受某种格式命令的正则表达式。模式如下:

可以以$开头并且有两个跟随值0-9,A-F,a-f(即:$ 00 - $ FF) 要么 可以是除“&<>'/”

之外的任何值

*如果值必须是00-ff后的有效十六进制值,则以$开头接下来的两个值

到目前为止,我有这个

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

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分: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");

答案 1 :(得分:2)

如果我正确地关注您,您要查找的最终结果是列表中没有的任何值"&<>' /&#34 ;,因为$和两个字母数字字符的任何组合也不在该列表中。因此,你可以表达你的意思:

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

更新:但是,如果你确实需要知道如何正确匹配$ 00 - $ FF,这就可以解决问题:

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

答案 2 :(得分:2)

正则表达式$用于锚定断言,表示:

  

匹配必须发生在字符串的末尾,或者在行或字符串末尾的\ n之前。

尝试使用[$](单个字符的字符类)或\$(字符转义)代替。