PDA

View Full Version : سوال: کمک در ایجاد یک عبارت با قاعده



تبسم ساینا
چهارشنبه 15 بهمن 1393, 13:02 عصر
سلام دوستان.من میخوام یه عبارت با قاعده در سی شارپ درست کنم به این نحو که همه ی اون جاهایی از متن که این عبارت رو دارن در نظر بگیره :
<Compile Include="Decoration\FormGallery\frmProjects.cs">
<SubType>Form</SubType>
تنها چیزی که در جاهای مختلف فرق میکنه عبارت داخل Include هستش.یعنی Decoration\FormGallery\frmProjects.cs ممکنه هرچیزی باشه ولی فرمت بقیه یکسان هست و درواقع میخوام به این عبارت داخل Include دسترسی داشته باشم.میشه راهنمایی کنید؟
من این پرتن رو نوشتم ولی خطا میگیره :
var blockComments = "<Compile Include=\"([a-zA-Z]+\\)*[a-zA-Z]+\\.cs\">\\s*<SubType>Form</SubType>";

Saman_12
چهارشنبه 15 بهمن 1393, 15:55 عصر
(?<=<(?i:Compile\sInclude)=").*?(?=".*\n\s*(?i:<SubType>Form</SubType>))

تبسم ساینا
چهارشنبه 15 بهمن 1393, 16:55 عصر
ممنونم.درست شد.فقط میخواستم اگه میشه یه توضیح درمورد اینی که نوشتید بدید.

Saman_12
چهارشنبه 15 بهمن 1393, 17:56 عصر
(?<=<(?i:Compile\sInclude)=")

اول چک میکنیم که حتما عبارت Compile Include قبل از متن مورد نظر ما وجود داشته باشه (نگاه مثبت به عقب) (همینطور < و ="")


(?i:Compile\sInclude)

option داخل یک گروه رو تغییر دادم تا حروف کوچیک بزرگ تفاتی نکنه و هر دو حالت رو پیدا کنه.


.*?

dot - . - یعنی هرچی که توی یک خط باشه (میشه مولتی لاین رو فعال کرد بعد new line رو هم پیدا میکنه) * یعنی عبارت قبلی به تعداد هیچ یا بیشتر تکرار بشه.
توضیح علامت سوال سخته فقط بدونید که اینجا کوچک ترین عبارت ممکن رو پیدا میکنه (بین دو تا ").

(?=".*\n\s*(?i:<SubType>Form</SubType>))
این هم چک میکنه که بعد از متن مورد نظر بقیه عبارت باشه (نگاه مثبت به جلو) بقیش هم مشابه دفعه اول هست.

تبسم ساینا
پنج شنبه 27 فروردین 1394, 16:35 عصر
سلام .. اگه عبارتمون به عبارت زیر تغییر پیدا کنه :
<Compile Include="Account\Login.aspx.cs">
<DependentUpon>Login.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
چجوری باید عبارت با قاعده رو تغییر داد ؟درواقع میخوام دقیقآ" به عبارت داخل Include دسترسی پیدا کنم منتها با این تغییری که نوشتم.
من همچین چیزی نوشتم ولی جواب نمیده !
(?<=<(?i:Compile\sInclude)=").*?(?=".*\n\s*(?i:<DependentUpon>Login.aspx</DependentUpon>))(?=.*\n\s*(?i:<SubType>Form</SubType>))
****
درست شددددد.