PDA

View Full Version : آموزش: Regular Expressions in ASP.NET



z_bluestar
جمعه 31 اردیبهشت 1389, 13:08 عصر
Regular expressions ها یک ابزار بسیار مفید برای کار با متن ها هستند. وقتی شمـا نیاز دارید که مقدار ورودی کـاربر رو اعتبار سنجی کنید یا دنبال فرمت خاصی در String هستید. یا می خواهید یک متن رو دوباره قالب یندی کنید می تونید از Regular expressionsها استفاده کنید.

بخش اول :


Quantifiers:

Quantifiers یک راه ساده رو برای تعیین یک الگو (pattern) برای Regular expressions را فراهم می کنند که یک کاراکتر یا یک سری از کـاراکترها چند بار می تونن در متن تکرار بشن ، مثال :

شناسه غیر صریح (non-explicit quantifiers) :


* "0 یا بیشتر تکرار می شود"
+"1 یا بیشتر تکرار می شود"
? "0 یا یک بار تکرار می شود "


Quantifiers همیشه اشاره دارن به الگوی قبل از خود یعنی متنی که در سمت چپ آنها واقع شده ، مثال:

http://barnamenevis.org/forum/attachment.php?attachmentid=49370&stc=1&d=1274433295





شناسه صریح (explicit quantifiers) :

بر این به مشخص کردن دقیق اینکه یک الگو داده شده چند بار در متن تکرار می شود از explicit quantifiers می توان استفاده کرد .

explicit quantifiersها از براکت ها "{}" استفاده می کنند . برای مثال :


· { x{5 حرف x در متن 5 بار تکرار شود
· : x{5,}حرف x در متن 5 بار یا بیشتر تکرار شود
· : x{,5}حرف x در متن 5 بار یا کمتر تکرار شود
· : x{2,3}حرف x در متن 2 تا 3 بار تکرار شود



http://barnamenevis.org/forum/attachment.php?attachmentid=49368&stc=1&d=1274433176
(http://barnamenevis.org/forum/attachment.php?attachmentid=49368&stc=1&d=1274433176)

raziee
جمعه 31 اردیبهشت 1389, 13:16 عصر
Regular expressions موضوع پر کاربرد و پر اهمیتی هست که تو سایت تاپیکی برای آموزش کاملش نبوده.
خوشحال شدم که این تاپیک ایجاد شده.
و امیدوارم که این آموزش ادامه هم داشته باشه.

z_bluestar
جمعه 31 اردیبهشت 1389, 14:00 عصر
بخش دوم:


Meta characters:

Meta characters به کاراکترهایی در ساختار Regular expressions گفته می شود که دارای معنایی خاصی هستن .

· . (dot) : ساده ترین Meta characters می باشد که با هر کـاراکتری مصابقت دارد اما بیشتر با quantifiers با یک محدوده خاص استفاده میشه .
· ^ : برای تطبیق دادن شروع یک متن با الگوی مورد نظر استفاده می شود
· $ : برای تطبیق دادن پایان یک متن با الگوی مورد نظر استفاده می شود
· | (pipe) : برای شرط Or استفاده می شود ببن دو عبارت
· () : برای تعیین کردن یک گروه از کـاراکتر بعنوان یک الگو

مثال :

http://barnamenevis.org/forum/attachment.php?attachmentid=49373&stc=1&d=1274435610

Character Classes:

Character Classes با hard braces [ ]ها شناخته میشند آنها لیست ساده ای از کاراکتر ها هستند که می تونن تو یک موقعیت خاص استفاده بشن . نکته مهم :Character Classesها نمی تونن شامل یک کلمه , یک الگو یا یک حرف خاص باشند .

مثلا برای تعیین کلاس ارقام می تونیم از Character Classesبه این شکل استفاده کنیم : [0123456789] برای نشون دادن یک rang از کاراکتر ها می تونیم از –استفاده کنیم مثال :[0-9],[a-z],[A-Z]

همچنین شمـا می توانید از کاراکتر ^(carat) برای خنثی کردن یکسری کاراکتر استفاده کنید برای مثال [^aAeEiIoOuU] شامل همه کاراکتر ها بجز vowel character "aeiou" می شود

به یاد داشته باشد که کاربرد کاراکتر ^ در Character Classes متفاوت با Meta characters می باشد

مثال :

http://barnamenevis.org/forum/attachment.php?attachmentid=49374&stc=1&d=1274435610

Hossein_VB
جمعه 31 اردیبهشت 1389, 15:28 عصر
اینم چنتا لینک آموزش کامل :
http://msdn.microsoft.com/en-us/library/ms972966.aspx
http://msdn.microsoft.com/en-us/library/ff650303.aspx
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.regularexpressionvalidat or.aspx
http://msdn.microsoft.com/en-us/library/ms996428.aspx

z_bluestar
جمعه 31 اردیبهشت 1389, 23:50 عصر
بخش سـوم :
Predefined Set Metacharacters

http://barnamenevis.org/forum/attachment.php?attachmentid=49406&stc=1&d=1274471042

z_bluestar
جمعه 31 اردیبهشت 1389, 23:56 عصر
خود من هم آشنایی کـاملی با Regular Expressions نداشتم ولی وقتی یاد گرفتم گفتم اینجـا بذارم تا بقیه هم استفاده کنن .
اگه از دوستان و اساتید محترم جایی در حرف های من رو دیدند که به نظرشون اشتباه اومد لطفا حتمـا بگند تا اصلاح کنم .

امیدوارم بدرد بقیه دوستان هم خورده باشه

Nightbat
شنبه 01 خرداد 1389, 07:39 صبح
آقای راد یک کتاب خوب در این زمینه دارن که خیلی کمک می کنه، به دوستانی که می خوان یاد بگیرن پیشنهاد می کنم از اون استفاده کنن.

mohsen.nsb44
شنبه 01 خرداد 1389, 10:43 صبح
آقای راد یک کتاب خوب در این زمینه دارن که خیلی کمک می کنه، به دوستانی که می خوان یاد بگیرن پیشنهاد می کنم از اون استفاده کنن.
ميشه كتابشو واسه دانلود بزارين؟

Behrouz_Rad
شنبه 01 خرداد 1389, 11:02 صبح
ميشه كتابشو واسه دانلود بزارين؟
واسه دانلود؟ شوخی می کنی؟
http://www.barnamenevis.org/forum/showthread.php?t=120542

Mostafa_Dindar
شنبه 01 خرداد 1389, 19:14 عصر
سلام

اين هم آموزش خوبيه ، بدردتون ميخوره .

آموزش عبارات با قاعده. 600k rar (http://www.persianupload.com/1845834)

Mostafa_Dindar
شنبه 01 خرداد 1389, 20:18 عصر
Meta characters:

Meta characters به کاراکترهایی در ساختار Regular expressions گفته می شود که دارای معنایی خاصی هستن .

· . (dot) : ساده ترین Meta characters می باشد که با هر کـاراکتری مصابقت دارد اما بیشتر با quantifiers با یک محدوده خاص استفاده میشه .
· ^ : برای تطبیق دادن شروع یک متن با الگوی مورد نظر استفاده می شود
· $ : برای تطبیق دادن پایان یک متن با الگوی مورد نظر استفاده می شود
· | (pipe) : برای شرط Or استفاده می شود ببن دو عبارت
· () : برای تعیین کردن یک گروه از کـاراکتر بعنوان یک الگو

مثال :

http://barnamenevis.org/forum/attachment.php?attachmentid=49373&stc=1&d=1274435610






در ادامه توضيحات خوب دوستمون ، كاراكتر "\" يا Backslash كاربرد خاصي دارد و در صورتي كه بخواهيد در Expression تان از MetaCharacter ها هم وجود داشته باشد از اين بك اسلش استفاده ميشود ، به عبارتي معني خاص MetaCharacter ها را از بين ميبرد .
مثلا همانطور كه در مثال دوستمون ميبينيد اگر بخواهيم هر متني كه باc:\ شروع شود با ^C:\\ برسي كنيم ( دو تا اسلش) .



Character Classes:

Character Classes با hard braces [ ]ها شناخته میشند آنها لیست ساده ای از کاراکتر ها هستند که می تونن تو یک موقعیت خاص استفاده بشن . نکته مهم :Character Classesها نمی تونن شامل یک کلمه , یک الگو یا یک حرف خاص باشند .



به عبارتي نميتونيم در Character Class ها نميتونيم يك كلمه يا Pattern رو براي جستجو تعريف كنيم ، تنها كاراكترهاي تنها مجاز است .



به یاد داشته باشد که کاربرد کاراکتر ^ در Character Classes متفاوت با Meta characters می باشد




به عبارتي MetaCharacter ها ديگر اون معناي خودشون رو داخل ‍‌[] از دست ميدن . مثلا ديگر لازم نيست براي استفاده از متا كاراكترها از بك اسلش استفاده كنيد .

Mostafa_Dindar
شنبه 01 خرداد 1389, 20:39 عصر
در تكميل مطالب دوست خوبمون لازمه كه چند جمله گفته بشه .

تا اكنون ياد گرفتيم كه چطور از [0-9] براي مشخص كردن كاراكترهاي رقمي يا از

[0-9a-zA-Z] براي كاركترهاي alphanumeric استفاده كنيم ولي همانطور كه ميبينيد استفاده از اونها كمي اضافه كاري هست ، پس ما از چند MetaCharacter از پيش تعريف شده استفاده ميكنم تا كارمون راحتت تر بشه .

مثلا d مشخصه هر كاركتر رقمي هست يعني [0-9] يا w مشخصه هر كاركتر "حرفي عددي" يعني alphanumeric .
كه بايد از

[0-9a-zA-Z]استفاده ميكرديم .

نكته قابل توجه ، همه اين كاركترهاي ويژه با بك اسلش استفاده ميشوند و همچنين تمامي اين كاراكترها در System.Text.RegularExpressions دات نت تعريف شده هستند . ممكن هست اينها در php يا ديگر زبانها همين معني را بدهند يا معني متفاوتي داشته باشند .

بخش سـوم :
Predefined Set Metacharacters

http://barnamenevis.org/forum/attachment.php?attachmentid=49406&stc=1&d=1274471042

احساس كردم جاي چند تا مثال خالي بود
http://barnamenevis.org/forum/attachment.php?attachmentid=49474&stc=1&d=1274546907

z_bluestar
یک شنبه 02 خرداد 1389, 09:38 صبح
این هم یه نمونه از کاربرد کلاس Regular Expressions در C#‎

//Validate a string
string ZipCode = "12345";
String ZipRegex = @"^\d{5}$";
if (System.Text.RegularExpressions.Regex.IsMatch(ZipC ode, ZipRegex))
Response.Write("ZIP is valid!");
else
Response.Write("ZIP is invalid!");


//Match a string
string SearchString = "How much wood could a woodchuck chuck if a woodchuck could chuck wood?";
string MatchExpression = "wood";
System.Text.RegularExpressions.MatchCollection matches = System.Text.RegularExpressions.Regex.Matches(Searc hString, MatchExpression);

int MatchCount = matches.Count;
string Matcheslabel = "";
foreach (System.Text.RegularExpressions.Match match in matches)
{
Matcheslabel += "Found " + match.ToString() + " at position " + match.Index + ".<br>";
}

//Replace a string
string NewString = System.Text.RegularExpressions.Regex.Replace(Searc hString, "wood" , "New Word");]

z_bluestar
یک شنبه 02 خرداد 1389, 13:41 عصر
یک نمونه از کـاربرد Regular Expressions در Web form ها

<table cellpadding="5" cellspacing="0" border="0">
<tr>
<td>Email:</td>
<td><asp:TextBox id="EmailTextBox" runat="server" Width="238px"></asp:TextBox></td>
<td>
<asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ErrorMessage="Email required." Text="*" ControlToValidate="EmailTextBox" />
<asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ErrorMessage="Invalid Email" Text="*" ControlToValidate="EmailTextBox" ValidationExpression="[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}" />
</td>
</tr>
</table>

Mostafa_Dindar
پنج شنبه 06 خرداد 1389, 02:49 صبح
سلام ،

اين هم يك Cheat sheet (http://www.addedbytes.com/download/regular-expressions-cheat-sheet-v2/pdf/) در مورد عبارات باقاعده كه از لينك معرفي شده توسط آقاي موسوي (http://barnamenevis.org/forum/showthread.php?t=220904) پيدا كردم ...

اميدوارم بدردتون بخوره

masoodp666
دوشنبه 16 اسفند 1389, 13:26 عصر
خیلی خوب بود و بسیار پر استفاده
ممنون از همه دوستان

این هم یه ذره مثال بیشتر و گویا تر

http://www.regular-expressions.info/reference.html

rezabehboodi0098
دوشنبه 15 اردیبهشت 1393, 17:21 عصر
با سلام من میخام تو کاراکتر اینا نباشن : "/.,-" و...