2011-02-24 56 views
0

我想編寫一個自定義的正則表達式,其中的格式是這樣XYZ-ABC-001 其中如何編寫自定義的正則表達式

  1. XYZ是固定的,
  2. ABC是可變的(也可以是AZ之間的任何三個字符)
  3. 001是可變的(它可以是0-9之間的任意數字)

回答

2

這將匹配:

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

+0

這個正則表達式允許在最後一組任意數量的數字。我同意在這個問題上這個問題還不是很清楚,但是如果要求只有三位數字,那麼'\ d +'應該由'\ d {3}'替代,如果它可以介於1和1之間三位數字,那麼'\ d {1,3}'就適合了。 +1,無論如何。 – 2011-02-24 09:04:29

+0

你是對的帕特里克,數字的長度必須是三。所以只是我按照我的要求修改了TechnoCare提供的表達方式。 – user631954 2011-02-27 04:13:00

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"); 
    } 

然後你就可以修改它稍微適應您的需求例如用代替。

+0

非常難看,不可讀,大約比應該長20倍。通過這種方式,我永遠不會讓txt2re.com產生正則表達式「a + b +」。我不認爲這個網站有整體積極的影響。 – Kobi 2011-02-24 09:01:50