嗨,我試圖過濾大量的文本文件使用Regex.Split大約超過20我需要使用的字符串模式,但結果是不正確的,有這麼多空弦。下面C#Regex.Split與多個字符串模式超過20
是我的代碼
string[] tmp = Regex.Split(originalString, @"(LINE|3DFACE|3DSOLID|ARC|ATTDEF|ATTRIB|BODY|CIRCLE|DIMENSION|ELLIPSE|HATCH|HELIX|IMAGE|INSERT|LEADER|LIGHT||LWPOLYLINE|MLINE|MLEADER|MLEADERSTYLE|MTEXT|OLEFRAME|OLE2FRAME|POINT|POLYLINE|RAY|REGION|SECTION|SEQEND|SHAPE|SOLID|SPLINE|SUN|SURFACE|TABLE|TEXT|TOLERANCE|TRACE|UNDERLAY|VERTEX|VIEWPORT|WIPEOUT|XLINE)");
,如果我只使用了其中的5那麼結果是能夠做到完全按照我需要的,是有regex.split字符串模式的任何限制?
編輯1
感謝@MRAB
這裏是實際運行的工作和右輸出的代碼
string fileName = textBox1.Text;
var stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
TextReader sr = new StreamReader(fileName);
string originalString = sr.ReadToEnd();
sr.Close();
string[] tmp = Regex.Split(originalString, @"(3DFACE|3DSOLID|ACAD_PROXY_ENTITIY|ARC|ATTDEF|ATTRIB|BODY|CIRCLE|DIMENSION|ELLIPSE|HATCH|HELIX|IMAGE|INSERT|LEADER|LIGHT|LWPOLYLINE|MLINE|MLEADERSTYLE|MLEADER|MTEXT|OLEFRAME|OLE2FRAME|POINT|POLYLINE|RAY|REGION|SEQEND|SHAPE|SOLID|SPLINE|SUN|SURFACE|TABLE|TEXT|TOLERANCE|TRACE|UNDERLAY|VERTEX|VIEWPORT|WIPEOUT|XLINE|LINE)");
List<string> result = new List<string>();
for (var i = 1; i < tmp.Count() - 1; i += 2)
{
result.Add(tmp[i] + tmp[i + 1]);
}
輸出看起來像什麼,除了空字符串?只是猜測......可能是||在LIGHT和LWPOLYLINE之間 – Roman 2012-01-15 23:39:50
聽起來有點像你實際上不需要一個正則表達式,而是將字符串標記爲 – IanNorton 2012-01-15 23:48:23