PDA

نسخه کامل مشاهده نسخه کامل : regular expression asp.net



kaka_R
27-02-2007, 02:19
;کسی هست بتونه به من تو مبحثregular expression asp.net کمک کنه

_H2_
27-02-2007, 11:31
سلام
این الگوها اصل بنیان Regex ها هستند، که البته معمولاَ توضیح همه شان را یکجا نمی یابید. (هرچی بلد بودم را ریختم وسط!)

کاراکتر نقطه
این کاراکتر مچ میشه با همه کاراکترها بجز خط جدید(Enter-13)

کاراکتر بین [ ]
این کاراکترها مچ میشوند با حداقل یکی از خودشان (Or)
مثلاَ نظیر [xyz] باید x یا y یا z باشد.
البته استثنا هم دارد و آن کاراکتر "-" است که باعث چک کردن محدوده ای میشود
مثلاَ نظیر [a-z] باید حتماَ یک حرف انگلیسی باشد و نیز ترکیباتی نظیر [a-z0-9] نیز مجاز است.

کاراکتر ^
این کاراکتر باعث معکوس شدن محدوده میشود.

کاراکتر d\
با یک عدد واحد مچ میشود.

کاراکتر D\
با یک کاراکتر غیر عددی مچ میشود. (بر عکس قبلی)

کاراکتر w\
با یک حرف انگلیسی مچ میشود و برابر [_a-zA-Z] میباشد.

کاراکتر W\
با یک غیر حرف انگلیسی مچ میشود، (برعکس قبلی.)

کاراکتر *
که همه میدانند و با هر تعداد(حتی تعداد صفر) کاراکتری از نوع کاراکتر قبلی مچ میشود.

کاراکتر +
با هر تعداد(حداقل یک) کاراکتری از نوع کاراکتر قبلی مچ میشود.
مثلاَ اگر عبارت "abbb5" با هم "ab*5" مچ میشود و هم "ab+5" ولی
عبارت "a5" فقط با "ab*5" مچ میشود و با "ab+5" سازگار نیست.

کاراکتر ?
با هیچ یا یک کاراکتر از نوع کاراکتر قبلی مچ میشود.

کاراکتر s\
با یک فاصله واحد مچ میشود.

کاراکتر S\
با یک کاراکتر غیر فاصله مچ میشود. (بر عکس قبلی)

کاراکترهای ()
برای گروه بندی دیگر کاراکتر ها استفاده میشود که با | قابلیت or پیدا میکند.

کاراکتر {}
این کاراکترها در ترکیب معنا پیدا میکنند و مشخص کننده تعداد هستند
مثلاَ da{2,4}\d\ باید با یک عدد شروع شود و 2 الی 4 کاراکتر a ادامه یابد و مجدداَ با یک عدد تمام شود.
ضمناَ حذف یکی از محدوده ها مجاز است
مثلاَ da{2,}\d\ باید با یک عدد شروع شود و با حداقل 2 کاراکتر a ادامه یابد و مجدداَ با یک عدد تمام شود.

sanam.b
27-07-2008, 13:30
سلام به همه دوستان
عبارت زیر رو برای اعداد اعشاری در regexنوشتم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به نظر شما اشکال اون چیه که جواب نمی ده؟

فکر می کنم باید یه توضیح کوچولو بدم
اعداد صفر تا 9 هستد و اونی که در وسط کروشه است نقطه ممیز است نه صفر

_H2_
27-07-2008, 20:32
سلام
اولاً لازم میدونم از شما بابت جستجو، قبل از زدن تاپیک قدردانی کنم.

اگر بخواهید regex را برای asp.net و کلاینت استفاده کنید، فکر کنم ترکیب مناسب این باشد.
البته با این فرض که ورودی اعشاری و عدد صحیح، هر دو مجاز باشد. (که معمولاً اینچنین است.)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ولی در دسکتاپ تفاوتهای جزئی دارد.

ضمناً به نظر میاد، چندان حضور ذهن نداشتم و الآن که به پست خودم نگاه میکنم، میبینیم که "()s" را فراموش کرده ام توضیح دهم، که این موارد را نیز اضافه کردم.

موفق باشید.

sanam.b
04-08-2008, 17:42
بازم سلام

چه جوری می تونیم از stringbuilder در regex استفاده کنیم ؟(اصلا میشه استفاده کرد؟)
چون مرتبا پیغام میده که نمی تونهSystem.Text.StringBuilder به string تبدیل کنه ؟
خودم هم نمی دونم چطوری باید string به stringbuilder یا بالعکس تبدیل کرد ممنون میشم اگه در این دو مورد منو راهنمایی کنید.

_H2_
04-08-2008, 19:32
سلام
تبدیلاتشان ساده است.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ahmadb
23-08-2010, 12:33
سلام
ببخشید ، میدونم که تاپیک قدیمیه اما نمی خواستم تاپیک جدید درست کنم
کاراکتر : معنی خاصی داره ؟ علامت سؤال به غیر از اونی که گفتید معنی دیگه ای نداره ؟
مثلا من الگوی زیرو دیدم اما نمی تونم بفهممش ، میشه توضیحش بدین؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدخیلی ممنون

_H2_
25-08-2010, 01:02
سلام
شرایط و ضوابط regex خیلی گسترده تر از مطالب پست دوم است.

کاراکتر : معنی خاصی داره ؟
همینطوری خیر.
ولی علامت سوال در شروع یک گروه پرانتزی معنی خاصی دارد که کاراکتر بعدی به ان کمک میکند.
مثلاً از موارد جالب میتوان به این سینتکس اشاره کرد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در عبارت فوق اگر REGEX صادق باشد، بعدش باید REGEX_YES صادق باشد وگرنه باید REGEX_NO صادق باشد!

=====

در گروه های پرانتزی، مفهومی وجود دارد به نام تسخیر، که مقدار مچ شده با گروه پرانتزی در محلی نگه داری میشود و دوباره قابل چک شدن است.
مثلاً

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فقط وقتی مچ میشود که یک کلمه با فاصله ای عیناً تکرار شود ... Ali Ali
در واقع مورد مچ شده با گروه پرانتزی اول "تسخیر" شده و در بلوکی با ایندکس 1 قرار خواهد گرف و بعداً میتوان چک کنیم که ان بلوک تسخیر شده عیناً تکرار شده یا نه.


حالا تازه میرسیم به سوال شما در مورد کالن یا کولن یا همان دو نقطه خودمان!
عبارت regex زیر یک گروه را تعریف میکند که تسخیر روی ان انجام نمیشود

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

=====

در واقع عبارت Regex شما بیشتر باید کاربرد در پارسرهای BBCode داشته باشد و با مطالب بیان شده گمانم به راحتی بتوانید تحلیلش کنید.

موفق باشید.