Genelde, bir normal ifadeyi ayrıştırmak ve yakalama gruplarına geri değer katmak için birçok koşul ve/veya döngü ile son bulurum ve bu sorunu basit bir şekilde çözmesi için deneyimli yanıtlar arıyorum. X(?<xid>\d+)-(?<xsub>\w+)\.xml
gibi bir normal ifade deseni gibi dosya maç için tasarlanmıştır adlı yakalama grupları "xid" ve "XSUB" sahip olan belirli ÖrneğinDeğerleri bir Regex modeline dönüştürerek bir dize oluşturmanın en kolay yolu?
: X1-foo.xml, X555-bar.xml argümanlarla sağlandığında, vb: int xid=999, string xsub="baz"
, düzgün bir dosya adı oluşturmak için desen gruba bu değerleri arasına sokmak istiyorum:
basit tutmak için X999-baz.xml, açık yakalar iç içe değildir. String.Format olmadan
:
String.Format("X{0}-{1}.xml", xid, xsub)
ancak ben zaten herhangi bir dosya adı dizeden bu değerleri ayrıştırmasını bir Regex desen var ve istedikleri gibi bu kavram kolayca .NET dize biçimi öğeleri ile gerçekleştirilir Aynı kalıbı, doğruluk için bir dosya adını yeniden oluşturarak zıt yönde gitmek için kullanmak. Bir dize, ancak dosya adını yeniden oluşturmak için biçimlendirilmiş öğeleri içeren bir dize ayrıştırmak için bir regex desen gerekiyorsa, bunları yazarken, daha büyük bir el ile hata şansı oluşturmak için kullanılacak iki tür farklı sözdizimi gerektirir. yanlışlıkla regex desen eşleşmesinin sonucunu düzgün bir şekilde yeniden oluşturmayan kötü bir biçim öğesi dizesi oluşturur veya bunun tersi de geçerlidir.
Bu durumda, regex aslında 'input''dur. – BoltClock