如何编写自定义正则表达式

时间:2011-02-24 08:44:10

标签: asp.net regex

我想编写一个自定义正则表达式,其格式类似于XYZ-ABC-001 其中

  1. XYZ已修复,
  2. ABC是可变的(它可以是A-Z之间的任意三个字符)
  3. 001是可变的(它可以是0-9之间的任何数字)

2 个答案:

答案 0 :(得分:2)

这将匹配:

XYZ-[a-zA-Z]{3}-\d+

答案 1 :(得分:0)

DIY套件:http://txt2re.com/

示例:http://txt2re.com/index-csharp.php3?s=XYZ-ABC-001&4&22&23&24&-17&-18&14&15&16

C#输出结果:

   string txt="XYZ-ABC-001";

  string re1="((?:[a-z][a-z]+))";   // Word 1
  string re2="(-)"; // Any Single Character 1
  string re3="(.)"; // Any Single Character 2
  string re4="(.)"; // Any Single Character 3
  string re5="(.)"; // Any Single Character 4
  string re6="(-)"; // Any Single Character 5
  string re7="(\\d)";   // Any Single Digit 1
  string re8="(\\d)";   // Any Single Digit 2
  string re9="(\\d)";   // Any Single Digit 3

  Regex r = new Regex(re1+re2+re3+re4+re5+re6+re7+re8+re9,RegexOptions.IgnoreCase|RegexOptions.Singleline);
  Match m = r.Match(txt);
  if (m.Success)
  {
        String word1=m.Groups[1].ToString();
        String c1=m.Groups[2].ToString();
        String c2=m.Groups[3].ToString();
        String c3=m.Groups[4].ToString();
        String c4=m.Groups[5].ToString();
        String c5=m.Groups[6].ToString();
        String d1=m.Groups[7].ToString();
        String d2=m.Groups[8].ToString();
        String d3=m.Groups[9].ToString();
        Console.Write("("+word1.ToString()+")"+"("+c1.ToString()+")"+"("+c2.ToString()+")"+"("+c3.ToString()+")"+"("+c4.ToString()+")"+"("+c5.ToString()+")"+"("+d1.ToString()+")"+"("+d2.ToString()+")"+"("+d3.ToString()+")"+"\n");
  }

string re1="((?:[a-z][a-z]+))"; // Word 1 string re2="(-)"; // Any Single Character 1 string re3="(.)"; // Any Single Character 2 string re4="(.)"; // Any Single Character 3 string re5="(.)"; // Any Single Character 4 string re6="(-)"; // Any Single Character 5 string re7="(\\d)"; // Any Single Digit 1 string re8="(\\d)"; // Any Single Digit 2 string re9="(\\d)"; // Any Single Digit 3 Regex r = new Regex(re1+re2+re3+re4+re5+re6+re7+re8+re9,RegexOptions.IgnoreCase|RegexOptions.Singleline); Match m = r.Match(txt); if (m.Success) { String word1=m.Groups[1].ToString(); String c1=m.Groups[2].ToString(); String c2=m.Groups[3].ToString(); String c3=m.Groups[4].ToString(); String c4=m.Groups[5].ToString(); String c5=m.Groups[6].ToString(); String d1=m.Groups[7].ToString(); String d2=m.Groups[8].ToString(); String d3=m.Groups[9].ToString(); Console.Write("("+word1.ToString()+")"+"("+c1.ToString()+")"+"("+c2.ToString()+")"+"("+c3.ToString()+")"+"("+c4.ToString()+")"+"("+c5.ToString()+")"+"("+d1.ToString()+")"+"("+d2.ToString()+")"+"("+d3.ToString()+")"+"\n"); }

然后,您可以稍微修改它以根据您的需要进行调整,例如将替换为(.)