معرفی ابزاری برای عبارات باقاعده

سلام دوستان
میدونم از خیلی وقت پیش اینجا ننوشتم و حالا بعد از مدتها غیبت دارم شروع میکنم.
راستش بد ندیدم که یه بخش جدیدی رو به فهرست اضافه کنم با عنوان ابزارهای‌برنامه‌نویسی که به معرفی کامپوننت‌ها و ابزارهای موردنیاز بپردازم.
خب میرم سراغ اولین ابزار.
برای من و شما بعنوان برنامه‌نویس، صحت ورود اطلاعات از سمت کاربر در بیشتر حالات از اهمیت ویژه‌ای برخوردار هست. یه نمونه ساده ورود آدرس پست‌الکترونیکی هست که باید بررسی‌های ویژه‌ای در اون گنجانده بشه. بعنوان مثال آدرسهای زیر همه صحیح هستند:

power@yahoo.com
power@ia.un.ir
power.station@yahoo.com

واقعا اگر قرار باشه حالات مختلف رو بررسی کنیم، راهش این نیست که به ازای هر حالت یه دستور شرطی رو بنویسیم. در این موارد میتونیم از عبارات باقاعده (Regular Expression) برای صحت یک ورودی استفاده کنیم.
ابزاری که در اینجا معرفی میکنم با عنوان MTrace‌ از شرکت RegExLab هست که یه محیط ساده و خیلی کارآمد رو در اختیار ما قرار میده تا عبارت با قاعده خودمون رو در اون تعریف کنیم و سپس تست کنیم که چه رشته‌هایی در این عبارت قابل پذیرش خواهد بود.
و جالب تر اینکه سورس همین عبارت رو با زبان‌های چون جاوا، وی‌بی، سی++ و سی‌شارپ ارائه میده که فقط باید کپی کنید و در برنامه خودتون قرار بدید.
برای نمونه یک عبارت باقاعده که صحت آدرس ایمیل رو نشون میده به این قرار هست:

^[a-zA-Z][w.-]*[a-zA-Z0-9]@[a-zA-Z0-9][w.-]*[a-zA-Z0-9].[a-zA-Z][a-zA-Z.]*[a-zA-Z]$

در این ابزار بعد از ورود عبارت، کلیه اجزای آنرا با رنگ‌های مختلف و بخش‌های قابل تفکیک در ساختاری درختی به نمایش میذاره. برای درک درستی از عملکرد این ابزار به تصویر زیر نگاه کنید.

سورس زیر نمونه کد تولید شده به زبان سی‌شارپ هست.

using System.Text.RegularExpressions;

// regular expression object
Regex re = new Regex(@"^[a-zA-Z][w.-]*[a-zA-Z0-9]@[a-zA-Z0-9][w.-]*[a-zA-Z0-9].[a-zA-Z][a-zA-Z.]*[a-zA-Z]$");

// Match object
Match m = re.Match("your string");

// found or not
if( m.Success )
{
    // found
}
else
{
    // not found
}

منتظر ابزارهای بعدی باشید.

نظرات 4 + ارسال نظر
مریم شنبه 2 دی‌ماه سال 1385 ساعت 12:45 ق.ظ

سلام
چه عجب بالاخره یه جای درست و حسابی پیدا شد که ۴تامطلب به درد بخور داشته باشه.
وبلاگ خوبی دارین .تبریک میگم.
من در حال خواندن MCSD هستم و بعضی مواقع سوالاتی دارم .اگر مطمئن باشم که زود جواب میدین هزارتا سوال دارم.منتظر جوابتون هستم تا اولین سوالمو برسم.
امیدوارم به زودی جوابتون برسه

سلام
خوشحالم که مطالب اینجا بدرد شما میخوره.
در هر صورت اگر سوالی دارید مطرح کنید تا اگر تونستم جواب بدم.
موفق باشید

مریم شنبه 2 دی‌ماه سال 1385 ساعت 05:39 ب.ظ

سلام ممنون از توجه شما
سوال من اینه که : یه کد نوشتم که وقتی اجرا می کنم محتویات cd رو میریزه روی هارد.این برنامه روی هارد اجرا میشه نه سی دی . فقط مشکل من اینه که صفحه command prompt باز میشه و فایلهایی که کپی میشه رو نشون میده.می خوام ببینم باید چیکار کنم که این صفحه hiddenبشه و نشون داده نشه .
راستی اگر باید جای دیگه ای از سایت سوالاتمو مطرح کنم لطفا منو راهنمایی کنین .
متشکرم

به نظر میرسه که شما از طریق Shell و یا با اجرای یه BatchFile دارید کپی رو انجام میدید. میتونید بجای اینکار با استفاده از دستور FileCopy و یا با تابع API CopyFile اینکار رو انجام بدید.
معرفی تابع هم بدین صورت هست:

Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

مریم یکشنبه 3 دی‌ماه سال 1385 ساعت 12:17 ق.ظ

وااااااااااای ی ی ......
کار خیلی سخت تر شد.
من تازه کارم.تورا به خدا یه جوری بگین که منم حالیم بشه جریان چیه.
البته از بد شانسی شما من آدمی هستم که تا جواب سوالمو پیدا نکنم ول کن نیستم.
برای همین پرسیدم که اگر این سوالات جای خاصی داره منو راهنمایی کنین

تنهای میمونه سورسی رو که نوشتید بدستم برسونید تا دقیق بدونم نحوه عملکرد شما چطوری هست.
ایمیل من: PalizeSoftware@Yahoo.com

حمید دوشنبه 15 مرداد‌ماه سال 1386 ساعت 06:06 ب.ظ

با عرض سلام و خسته نباشید.
من یک دیکشنری انگلیسی به فارسی ساخته ام که کاملترین دیتابیس را دارد و من از توابع آ.پی.آی سر در نمی آورم لطفا اگر میتوانید یک کدی به ایمیلم ارسال کنید که با آن بتوانم وقتی مکان نما را بر روی هر حرفی که در دسکتاپ یا جای دیگر است می برم تشخیص دهم (مثل دیکشنری نارسیس یا بابیلون) البته من یه کدی دارم که فقط لغت های درون پنجره برنامه را تشخیص میدهد.
"وبلاگ شما خیلی حرفه ای است" من حمید برنامه نویس خیلی ریز ویژوال بیسیک. "NovinSoftware@gmail.com"

سوال دوم:
من دیتابیس را با اکسس ساخته ام و نمیدانم چگونه خیلی حرفه ای از کپی برداری از لغت ها جلوگیری کنم. چگونه میتوانم از همین کدی که شما برای کار با فایل های فشرده گذاشته اید استفاده کنم و دیتابیس را داخل فایل زیپ قرار دهم و بر روی آن پسورد بگذارم و دیتابیس را از فایل رمز گذاری شده در داخل برنامه به Adodc متصل کنم.

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد