از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
با استفاده از عملگر =~ در Bash
سرفصلهای مطلب
عبارت منظم یک ابزار بسیار مفید برای مطابقت با هر محتوا یا جستجو و جایگزینی محتوای یک فایل یا در یک رشته با استفاده از الگوی regex است. می توان آن را با اسکریپت Bash به روش های مختلف استفاده کرد. نماد =~ در عبارت “if” Bash برای جستجوی هر رشته ای استفاده می شود. بسیاری از انواع عبارت را می توان برای تعریف الگوهای regex منطبق استفاده کرد. برخی از عبارات معمولی که معمولاً استفاده می شود و استفاده از برخی عبارات با عملگر =~ در این آموزش توضیح داده شده است.
عبارات معمولی که معمولاً استفاده می شود
اصطلاح | هدف |
. | برای جستجوی کاراکترها بدون خط جدید (\n) استفاده می شود. |
^ | برای جستجوی کاراکترها در ابتدای رشته استفاده می شود. |
$ | برای جستجوی کاراکترهای انتهای رشته استفاده می شود. |
[0-9] | برای جستجوی هر عددی از محدوده 0-9 در رشته استفاده می شود. |
[A-Z] | برای جستجوی هر کاراکتری از محدوده AZ در رشته استفاده می شود. |
[a-z] | برای جستجوی هر کاراکتر و عددی از محدوده az در رشته استفاده می شود. |
[^A-Z0-9] | برای جستجوی همه کاراکترها به جز حروف بزرگ و ارقام در رشته استفاده می شود. |
[a-zA-z0-9] | برای جستجوی هر کاراکتر و عددی از محدوده az، AZ و 0-9 در رشته استفاده می شود. |
\n | برای جستجوی کاراکتر خط جدید استفاده می شود. |
\ t | برای جستجوی کاراکتر تب استفاده می شود. |
نمونه های مختلف =~ اپراتورها
روش های مختلف جستجوی یک رشته خاص در داخل یک متن با استفاده از عملگر =~ و الگوی عبارت منظم در این قسمت از آموزش نشان داده شده است.
مثال 1: یک رشته خاص را با استفاده از نماد “*” جستجو کنید
یک فایل Bash با اسکریپت زیر ایجاد کنید که مقدار رشته اصلی را در جایی که رشته جستجو می شود و مقدار رشته جستجو را در مقدار رشته اصلی جستجو می کند. بعد، عملگر “=~” با رشته جستجو برای بررسی اینکه آیا رشته جستجو در رشته اصلی وجود دارد یا خیر استفاده می شود. در اینجا، نماد “*” برای نشان دادن هر تعداد کاراکتر استفاده می شود.
#رشته اصلی را بگیرید
خواندن -پ “مقدار رشته اصلی را وارد کنید:” strValue
#رشته جستجو را بگیرید
خواندن -پ “مقدار رشته جستجو را وارد کنید:” جستجو کردن
#بررسی کنید که آیا رشته جستجو در رشته اصلی وجود دارد یا خیر
اگر [[ $strValue =~ .*$search.* ]]; سپس
اکو “رشته در متن وجود دارد.”
دیگر
اکو “رشته در متن وجود ندارد.”
فی
خروجی زیر پس از اجرای اسکریپت با مقدار رشته اصلی “Learn regular expression” و مقدار رشته جستجو “regular” ظاهر می شود. در اینجا، رشته جستجو در رشته اصلی وجود دارد:
مثال 2: پسوند فایل خاص را بررسی کنید
یک فایل Bash با اسکریپت زیر ایجاد کنید که نام فایل را از command-line استدلال کنید و بررسی کنید که آیا فایل یک فایل Bash است یا خیر.
#نام فایل را از آرگومان بگیرید
نام فایل=1 دلار
#مقدار پسوند جستجو را تعریف کنید
افزونه=‘ضربه شدید’
#بررسی کنید که آیا پسوند با پسوند فایل مطابقت دارد یا خیر
اگر [[ “$filename“ =~ \.$extension$ ]]; سپس
اکو “$filename یک فایل bash است.”
دیگر
اکو “$filename یک فایل bash نیست.”
فی
خروجی زیر برای نام فایل “ping1.bash” که یک فایل Bash است ظاهر می شود:
خروجی زیر برای نام فایل “hello.txt” که یک فایل Bash نیست ظاهر می شود:
مثال 3: کاراکترهای خاص را در یک رشته جستجو کنید
یک فایل Bash با اسکریپت زیر ایجاد کنید که یک مقدار رشته می گیرد و محدوده کاراکترهای “a” تا “e” را در رشته جستجو کنید.
#رشته اصلی را بگیرید
خواندن -پ “مقدار رشته اصلی را وارد کنید:” strValue
#بررسی کنید که آیا رشته دارای کاراکتری از a تا e است یا خیر
اگر [[ $strValue =~ [a-e] ]]; سپس
اکو “رشته شامل کاراکترهایی از “a” تا “e” است”
دیگر
اکو “رشته حاوی هیچ کاراکتری از “a” تا “e” نیست”
فی
خروجی زیر پس از اجرای اسکریپت با مقدار ورودی “LinuxHint” ظاهر می شود:
خروجی زیر پس از اجرای اسکریپت با مقدار ورودی Hello World ظاهر می شود:
مثال 4: شماره موبایل را تایید کنید
یک فایل Bash با اسکریپت زیر ایجاد کنید که یک شماره موبایل با فرمت خاص را می گیرد و با استفاده از الگوی عبارت منظم و عملگر =~ بررسی کنید که آیا این شماره معتبر است یا نامعتبر است.
خواندن -پ “شماره موبایل را وارد کنید [880-XXXX-XXXXXX]:” سیار
#الگو را برای تطبیق تنظیم کنید
الگوی regex=‘^880-[0-9]{4}-[0-9]{6}
#معتبر یا معتبر بودن شماره موبایل را بررسی کنید
اگر [[ $mobile =~ $regexPattern.* ]]; سپس
اکو “شماره موبایل معتبر است.”
دیگر
اکو “شماره تلفن همراه نامعتبر است.”
فی
خروجی زیر پس از اجرای اسکریپت با مقدار ورودی “880-1922-032970” ظاهر می شود که معتبر است:
خروجی زیر پس از اجرای اسکریپت با مقدار ورودی “880-15677-67345” ظاهر می شود که نامعتبر است:
نتیجه
روش های استفاده از عملگر “=~” برای جستجوی مقادیر رشته با انواع مختلف عبارات منظم در این آموزش نشان داده شده است.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-28 18:42:03