मैं डेटा निम्न प्रकार पर निम्नलिखित RegexRegex सी # में गैर पर कब्जा समूह
JOINTS.*\s*(?:(\d*\s*\S*\s*\S*\s*\S*)\r\n\s*)*
उपयोग कर रहा हूँ:
JOINTS DISPL.-X DISPL.-Y ROTATION
1 0.000000E+00 0.975415E+01 0.616921E+01
2 0.000000E+00 0.000000E+00 0.000000E+00
विचार दो समूहों को निकालने के लिए, प्रत्येक एक लाइन युक्त
string jointPattern = @"JOINTS.*\s*(?:(\d*\s*\S*\s*\S*\s*\S*)\r\n\s*)*";
MatchCollection mc = Regex.Matches(outFileSection, jointPattern);
foreach (Capture c in mc[0].Captures)
{
JointOutput j = new JointOutput();
string[] vals = c.Value.Split();
j.Joint = int.Parse(vals[0]) - 1;
j.XDisplacement = float.Parse(vals[1]);
j.YDisplacement = float.Parse(vals[2]);
j.Rotation = float.Parse(vals[3]);
joints.Add(j);
}
बहरहाल, यह काम नहीं करता है: इस प्रकार सी # कोड है (संयुक्त संख्या, 1, 2, आदि के साथ शुरू) के बजाय दो कब्जे वाले समूहों (अंदरूनी समूह) को लौटाना, यह एक समूह देता है: संपूर्ण ब्लॉक, कॉलम हेडर सहित। ऐसा क्यों होता है? सी # असंबद्ध समूहों के साथ अलग-अलग सौदे करता है?
अंत में, RegExes ऐसा करने का सबसे अच्छा तरीका है? (मुझे वास्तव में ऐसा लगता है कि मुझे अब दो समस्याएं हैं।)
आप जानते हैं, मैंने वास्तव में एमएसडीएन की जांच की कि 'कैप्चर' संपत्ति कैसे काम करती है (मैंने इसे कभी भी इस्तेमाल नहीं किया है), और मैंने यह नहीं देखा कि यह समूह 0 को संदर्भित करता है (जो स्पष्ट रूप से कर्कश का मुख्य कारण है ओपी)। +1! – Cameron