~2 min read • Updated Jul 16, 2025

عبارات منظم یکی از ابزارهای کلیدی برای جست‌وجو و پردازش متن هستند. در لینوکس، دستورات بسیاری مانند grep، find، locate، less و ویرایشگرهایی مانند vim از regex پشتیبانی می‌کنند. این مقاله بر فرم‌های مطابق استاندارد POSIX تمرکز دارد: عبارات پایه (BRE) و پیشرفته (ERE).


عبارات منظم چیست؟


عبارات منظم مجموعه‌ای از نمادها هستند که برای تطابق با الگوهای متنی استفاده می‌شوند. آن‌ها از wildcardهای شِلی دقیق‌تر و قدرتمندترند.


grep؛ قهرمان regex


grep -h bzip dirlist*.txt

گزینهتوضیح
-iبی‌تفاوتی نسبت به حروف بزرگ و کوچک
-vنمایش خطوطی که تطابق ندارند
-cشمارش تعداد تطابق‌ها
-l / -Lنمایش فایل‌هایی با / بدون تطابق
-nنمایش شماره خطوط
-hحذف نام فایل از خروجی

متاکاراکترها و لنگرها


متاکاراکترها شامل ^ $ . [ ] { } * + ? ( ) | هستند. برای جلوگیری از تداخل با شِل، از علامت نقل قول استفاده کنید.


  • .: تطابق با هر کاراکتر واحد
  • ^: تطابق با ابتدای خط
  • $: تطابق با انتهای خط

عبارات براکتی و کلاس‌های کاراکتری


grep '[bg]zip' dirlist*.txt
grep '[^bg]zip' dirlist*.txt

کلاستوضیح
[:alnum:]حروف و اعداد
[:digit:]فقط ارقام
[:lower:], [:upper:]حروف کوچک / بزرگ
[:space:]فاصله‌ها (مثل space، tab)

برای رفتار یکپارچه، زبان locale را به ASCII تغییر دهید:


export LANG=POSIX

BRE در برابر ERE


  • BRE: نیاز به اسلش برای کاراکترهای خاص دارد
  • ERE: پشتیبانی از |، +، ?، {} و () بدون اسلش

grep -E 'AAA|BBB|CCC' file.txt

تعیین تعداد تکرار با Quantifierها


نشان‌گذاریتوضیح
?صفر یا یک بار تکرار
*صفر یا بیشتر
+حداقل یک بار
{n}دقیقاً n بار
{n,m}بین n تا m بار
{n,}حداقل n بار

کاربردهای عملی


اعتبارسنجی شماره تلفن


grep -Ev '^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$' phonelist.txt

یافتن نام‌فایل‌های ناخوشایند


find . -regex '.*[^-_./0-9a-zA-Z].*'

جست‌وجوی regex با locate


locate --regex 'bin/(bz|gz|zip)'

جست‌وجو در less


less phonelist.txt
/^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$

regex در vim


/[0-9]\{3}\) [0-9]\{3\}-[0-9]\{4\}

برای فعال‌سازی برجسته‌سازی، دستور زیر را بزنید:


:set hlsearch

پیدا کردن ابزارهای پشتیبان regex


cd /usr/share/man/man1
zgrep -El 'regex|regular expression' *.gz

نتیجه‌گیری


عبارات منظم ابزارهایی پرکاربرد برای جست‌وجوی دقیق متن در لینوکس هستند. با استفاده از دستورات grep، find، locate، less و vim، می‌توانید متن‌ها را فیلتر کنید، داده‌ها را اعتبارسنجی نمایید و فایل‌ها را با دقت پیدا کنید. تسلط بر BRE و ERE و مفاهیم regex، مسیر پردازش پیشرفته متنی را برایتان هموار می‌کند.


Written & researched by Dr. Shahin Siami