我想編寫一個自定義的正則表達式,其中的格式是這樣XYZ-ABC-001 其中如何編寫自定義的正則表達式
- XYZ是固定的,
- ABC是可變的(也可以是AZ之間的任何三個字符)
- 001是可變的(它可以是0-9之間的任意數字)
我想編寫一個自定義的正則表達式,其中的格式是這樣XYZ-ABC-001 其中如何編寫自定義的正則表達式
這將匹配:
XYZ-[a-zA-Z]{3}-\d+
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"); }
然後你就可以修改它稍微適應您的需求例如用代替。
非常難看,不可讀,大約比應該長20倍。通過這種方式,我永遠不會讓txt2re.com產生正則表達式「a + b +」。我不認爲這個網站有整體積極的影響。 – Kobi 2011-02-24 09:01:50
這個正則表達式允許在最後一組任意數量的數字。我同意在這個問題上這個問題還不是很清楚,但是如果要求只有三位數字,那麼'\ d +'應該由'\ d {3}'替代,如果它可以介於1和1之間三位數字,那麼'\ d {1,3}'就適合了。 +1,無論如何。 – 2011-02-24 09:04:29
你是對的帕特里克,數字的長度必須是三。所以只是我按照我的要求修改了TechnoCare提供的表達方式。 – user631954 2011-02-27 04:13:00