ساخت Regex با هوش مصنوعی؛ مثال و تست فارسی
ساخت Regex با هوش مصنوعی را با مثال فارسی و کد Python یاد بگیرید؛ تعیین موتور، نمونه مثبت و منفی، حفظ قرارداد ارقام و تست الگو پیش از استفاده.

ساخت Regex با هوش مصنوعی را با تعیین موتور و نمونههای معتبر و نامعتبر شروع کنید. مدل باید یک الگوی محدود، توضیح اجزای آن و آزمونهای قابل اجرا بدهد؛ شباهت ظاهری عبارت به یک راهحل حرفهای کافی نیست. در این راهنما یک کد سفارش فرضی را با Python بررسی میکنیم و تفاوت استخراج متن با اعتبارسنجی کامل را میبینیم.
Regex برای چه مسئلهای مناسب است؟#
عبارت منظم برای شکل مشخص متن مفید است: کد سفارش، ساختار ساده شناسه یا یافتن یک نشانه در لاگ. برای فهم معنای جمله، اعتبار واقعی تاریخ یا تشخیص هویت مشتری به ابزار و منطق بیشتری نیاز دارید. «هر متنی که شبیه ایمیل است» با «نشانی ایمیل قابل استفاده» یک مسئله نیست.
پیش از پرامپت، قرارداد را بنویسید. در مثال ما کد باید با ORD- شروع شود، سال آن یکی از ۱۴۰۴ یا ۱۴۰۵ با ارقام لاتین باشد و بخش آخر دقیقاً چهار رقم داشته باشد. فاصله، متن اضافه و ارقام فارسی در این قرارداد پذیرفته نیستند. این محدودیت برای آموزش انتخاب شده و استاندارد عمومی کد سفارش نیست.
| نمونه | انتظار | دلیل |
|---|---|---|
| ORD-1405-0001 | قبول | مطابق قرارداد |
| ORD-1404-9999 | قبول | سال مجاز و چهار رقم |
| ORD-1403-0001 | رد | سال خارج از فهرست |
| ORD-1405-001 | رد | طول بخش آخر کمتر است |
| ORD-۱۴۰۵-۰۰۰۱ | رد | قرارداد ارقام لاتین دارد |
| xORD-1405-0001 | رد | پیشوند اضافه دارد |
| ORD-1405-0001x | رد | پسوند اضافه دارد |
پرامپت آماده برای تولید الگو#
برای موتور re در Python، اعتبارسنجی کامل کد سفارش میخواهم. پیشوند دقیق ORD-، سال فقط 1404 یا 1405، جداکننده خط تیره و شماره چهاررقمی لاتین است. فضای خالی و متن اضافی نباید پذیرفته شود. بر اساس جدول نمونه، الگوی کوتاه بساز، هر جزء را توضیح بده و با fullmatch آزمون اجراشدنی بنویس. اگر نیاز به نرمالسازی وجود دارد آن را جداگانه پیشنهاد کن؛ در خود الگو قرارداد را گسترش نده.
برای این مسئله، الگوی ORD-(?:1404|1405)-[0-9]{4} کافی است. گروه سال فقط انتخاب مجاز میسازد و بخش آخر تعداد رقم را محدود میکند. استفاده از [0-9] به جای \d در این قرارداد عمدی است. رفتار الگوهای Unicode و fullmatch در مستندات رسمی re پایتون توضیح داده شده است.
import re
pattern = re.compile(r"ORD-(?:1404|1405)-[0-9]{4}")
cases = [
("ORD-1405-0001", True),
("ORD-1404-9999", True),
("ORD-1403-0001", False),
("ORD-1405-001", False),
("ORD-۱۴۰۵-۰۰۰۱", False),
("xORD-1405-0001", False),
("ORD-1405-0001x", False),
("ORD-1405-0001\n", False),
]
for value, expected in cases:
actual = pattern.fullmatch(value) is not None
assert actual == expected, (value, actual, expected)
استخراج از متن با اعتبارسنجی فرق دارد#
اگر عبارت «سفارش ORD-1405-0001 ثبت شد» را بررسی کنید، fullmatch رد میکند چون کل رشته کد سفارش نیست. برای یافتن یک کد داخل جمله، جستوجو لازم است. ولی جستوجوی همان الگوی ساده داخل ORD-1405-00012 ممکن است بخش کوتاهتر را پیدا کند. مرزهای مجاز را هم باید تعریف کنید.
یک پرامپت تکمیلی بنویسید: «کد داخل جمله را میخواهم؛ اگر بلافاصله قبل یا بعد آن حرف، رقم یا خط تیره باشد، آن را معتبر ندان. نمونههای منفی زیر را اضافه کن.» سپس موتور را مشخص کنید؛ امکانات نگاه به عقب و شیوه مرزبندی در همه محیطها یکسان نیست. عبارت تولیدشده برای Python را بدون آزمون به JavaScript یا جستوجوی یک ویرایشگر منتقل نکنید.
ارقام فارسی، فاصله و نیمفاصله را چه کنیم؟#
دو تصمیم جدا دارید: آیا ورودی را نرمال میکنید، و آیا شکل خام باید حفظ شود؟ اگر قرار است کاربر عدد فارسی وارد کند، تبدیل رقم پیش از اعتبارسنجی میتواند مناسب باشد. در این صورت مقدار خام را برای نمایش و گزارش نگه دارید و خروجی استاندارد را در ستون جدا ذخیره کنید.
حذف همه فاصلهها ممکن است دو بخش نامرتبط را به یک کد معتبر تبدیل کند. بهتر است اگر قرارداد فقط فاصله ابتدا و انتها را مجاز میداند، همان را حذف کنید. فاصله داخل شناسه را رد کنید تا خطای ورودی دیده شود. همین قاعده برای نیمفاصله و نویسه نامرئی نیز لازم است؛ پاک کردن بیقاعده، خطا را پنهان میکند.
چگونه مجموعه آزمون خوبی بسازیم؟#
آزمون مثبت فقط نشان میدهد الگو بعضی متنها را میپذیرد. آزمون منفی نشان میدهد چه متنهایی را اشتباه قبول نمیکند. برای هر شرط، یک نمونه دقیقاً روی مرز و یک نمونه بیرون مرز بنویسید. طول سه و پنج رقم، سال نامجاز، حروف کوچک، فاصله انتهایی، رشته خالی و خط جدید از موارد مهم همین مثالاند.
از AI بخواهید «نمونهای پیدا کن که الگو قبول کند اما قرارداد رد کند». این پرسش برای نقد مفید است، اما پاسخ مدل جای اجرای آزمون را نمیگیرد. هر مورد تازه را به مجموعه ثابت اضافه کنید تا اصلاح بعدی، یک رفتار قبلی را خراب نکند. نام هر آزمون باید مشخص کند کدام تصمیم را کنترل میکند.
الگوهای پیچیده را کوچک نگه دارید#
وقتی الگو طولانی و پر از گروههای تو در تو شد، مسئله را دوباره بررسی کنید. گاهی جدا کردن ورودی به بخشها و بررسی هر بخش خواناتر است. برای تاریخ، Regex میتواند شکل را کنترل کند، ولی وجود واقعی روز در ماه را باید منطق تاریخ بررسی کند. برای فایلهای ساختاریافته نیز از parser مناسب استفاده کنید.
روی متنهای خیلی بلند، الگوهای مبهم با تکرارهای تو در تو ممکن است کند شوند. از مدل بخواهید الگو را ساده کند و ورودی دشوار پیشنهاد دهد. طول ورودی را در کاربرد واقعی محدود کنید و هزینه اجرا را اندازه بگیرید. یک عبارت کوتاهتر که قرارداد را روشن حفظ میکند، معمولاً نگهداری آسانتری دارد.
در پایان، الگو، نام موتور، قرارداد، نمونههای مثبت و منفی و روش نرمالسازی را کنار هم تحویل دهید. برای جریان کامل اصلاح فایل، پاکسازی داده با هوش مصنوعی و برای تشخیص خطای اجرای کد، رفع خطای پایتون را بخوانید. میتوانید ساخت همین مجموعه آزمون را با داده ساختگی در GPT Plus تمرین کنید.
سوالات متداول
چرا موتور Regex باید مشخص باشد؟
نگارش و امکانات میان Python، JavaScript و ابزارهای دیگر متفاوت است. الگوی یک محیط را بدون آزمون به محیط دیگر منتقل نکنید.
تفاوت search و fullmatch چیست؟
search دنبال بخش مطابق در متن میگردد. fullmatch بررسی میکند تمام رشته با الگو سازگار باشد.
آیا Regex تاریخ واقعی را تأیید میکند؟
Regex میتواند شکل ورودی را بررسی کند. وجود واقعی روز در ماه و تقویم به منطق معتبر تاریخ نیاز دارد.
ما در GPT Plus هر روز با مدلهای هوش مصنوعی کار میکنیم و تجربههایمان را به فارسی مینویسیم تا استفاده از AI برای همه سادهتر شود.
مطالب مرتبط

پاکسازی داده با هوش مصنوعی؛ نمونه CSV فارسی
پاکسازی داده با هوش مصنوعی را با نمونه CSV فارسی یاد بگیرید؛ قواعد اصلاح، حفظ مقدار خام، کد پایتون، گزارش تغییر و کنترل ردیفهای مبهم پیش از استفاده.

رفع خطای پایتون با هوش مصنوعی؛ روش گامبهگام
رفع خطای پایتون با هوش مصنوعی را با متن traceback و مثال عملی تمرین کنید؛ ساخت نمونه کوچک، اصلاح محدود، کنترل خروجی و نگهداری آزمون بازگشت خطا.

نوشتن تست کیس با هوش مصنوعی؛ نمونه عملی
نوشتن تست کیس با هوش مصنوعی را با نمونه کد تخفیف یاد بگیرید؛ نیازمندی دقیق، پیششرط، جدول آزمون مرزی، نتیجه مورد انتظار و ثبت شاهد اجرای واقعی.