عبارتهای منظم
عبارتهای منظم(
BASH از عبارت منظم توسعه یافته (
الگوهای عبارت منظم که برای گرفتن گروهها(پرانتزها)به کار میروند، رشتههای گرفته شدهشان را برای بازیابی بعدی، به متغیر
اجازه دهید، تشریح کنم که regex در BASHچگونه کار میکند:
$langRegex =\'(..)_(..)\' $if [[ $ langRegexLANG =~ $]] >then > echo "Your country code (ISO 3166-1-alpha-2) is$ { BASH_REMATCH[2] } ." > echo "Your language code (ISO 639-1) is$ { BASH_REMATCH[1] } ." >else > echo "Your locale was not recognised" >fi
آگاه باشید که تفکیک کلمه regex در BASH از نگارش
-
تکرار مفید:
از آن جهت که روش regex مورد استفاده در3.2 در نگارش3.1 نیز معتبر میباشد، ما قویاً پیشنهاد میکنیم هرگز عبارت منظم خودتان را نقلقولی نکنید. به خاطر داشته باشید که کاراکترهای ویژه را به طور صحیح با کاراکتر گریز پوشش دهید! -
برای سازگاری سراسری ( اجتناب از الزام به پوشش کاراکترهای خاص ) از یک متغیر برای ذخیره عبارت منظم خود استفاده کنید، مانند.
re =\'^\\*( >| *Applying |.*\\.diff|.*\\.patch)\'; این خیلی آسانتر از آن است که شما فقط ترکیب دستوری ERE را بنویسید و از لزوم پوشش، به همان خوبی اجتناب کنید که با تمام نگارشهای 3.x از BASH سازگار باشد.[[ $var =~ $re ]] همچنین، بخش E14 از Chet Ramey\'s Bash FAQ، را ملاحظه نمایید.
در مستندات گنو: Regex(3)
-
در پرسش و پاسخهای رایج:
من میخواهم بدون تکرار n مرتبه $ var ، عبارت $ more ... یا var ==$ bar یا var ==if [[ $ foo را بررسی کنم.var ==
عبارت منظم: یک عبارت منظم، الگوی پبچیدهتری است که میتواند برای انطباق با رشتههای معین به کار برود( اما بر خلاف جانشینها نمیتواند به نام فایلها بسط داده شود ).