بدون از دست دادن ذهن خود به اندازه کافی Regex یاد بگیرید

Summarize this content to 400 words in Persian Lang
من کاملاً درک می کنم که Regex برای یک برنامه نویس معمولی (از جمله خودم) یک موضوع جادوگری بسیار پیچیده و مرزی است، اما به من اعتماد کنید که بسیار قدرتمند است و در برخی موارد می تواند مشکلات را حل کند، بنابراین تصمیم گرفتم این وبلاگ ساده را جمع آوری کنم تا تمام تلاشم را برای آموزش به شما انجام دهم. به اندازه کافی رژکس بدون از دست دادن ذهن خود 🙂
اصول REGEX برای کنجکاوهای روح
بنابراین اگر میتوانستم 20 خط کد بنویسم تا از نوشتن regex جلوگیری کنم، این کار را انجام میدهم، اما هنوز در برخی موارد مفید است و یک راهحل معتبر است، بنابراین بیایید اصول اولیه و کافی را یاد بگیریم. regex
این وبلاگ یک زبان برنامه نویسی آگنوستیک خواهد بود، زیرا من از هیچ کدام به عنوان مثال استفاده نمی کنم، اما به جای استفاده از آن در یک زبان برنامه نویسی، به خود نحو پایبند هستم.
REGEX چیست و چرا به آن نیاز دارم
Regex تطبیق الگوی متنی است که به ما کمک میکند تکههای متن را مطابق الگویی که با استفاده از عملگرهای خاص مشخص میکنیم مطابقت دهیم، بنابراین این عملگرهای regex را به گونهای مرتب کنیم که هر کار پردازش متنی را که میتوانید تصور کنید، مرتب کنیم.
مثالها عبارتند از: اعتبارسنجی ایمیل، اعتبارسنجی شماره تلفن، اعتبارسنجی کد پستی، اعتبارسنجی کارت اعتباری، و غیره……
چگونه می توانم REGEX خود را تمرین کنم؟
ما از این ابزار آنلاین برای کمک به آزمایش و تجسم regex خود در زمان واقعی استفاده خواهیم کرد، این یک ابزار فوقالعاده عالی برای یادگیری است زیرا میتوانیم اشتباهات خود را ببینیم و همچنین بفهمیم چرا چنین الگوی کار میکند.
ما قصد داریم چند نمونه بسازیم تا به همان اندازه که برای شروع نیاز داریم regex یاد بگیریم و فعلاً کافی است تا زمانی که با چیزهای بسیار پیچیده روبرو شویم
مثال شماره تلفن
مثال ایمیل
نمونه برچسب قیمت
نمونه قالب تاریخ DD/MM/YYYY
شیت تقلب ما برای این آموزش
برای اینکه متمرکز بمانیم، این عملگرها را پوشش میدهیم، زیرا معتقدم آنها بیش از اندازه کافی هستند تا سر خود را در اطراف regex بپیچانیم، اما ناگفته نماند که regex میتواند بسیار پیچیده باشد، اما ما فقط به چیزهای کاملاً ابتدایی تطبیق الگو علاقه مند هستیم، بنابراین در اینجا برگه تقلب کوچک ما:
^ ابتدای یک خط
$ انتهای خط
[] گروه بندی – اساساً به معنای “محدوده” است [a-z]، [0–9]
{} به این معنی است که چند بار می خواهید این الگو رخ دهد
? یک یا صفر بار با نام اپراتور اختیاری
+ حداقل یک یا چند بار، اساساً به این معنی است که برای من مهم نیست چند بار این الگو رخ می دهد
* صفر یا چند بار
\w با هر حرف، عدد و خط زیر مطابقت دارد
\d فقط با تک رقمی مطابقت دارد
فضای \s
برگه \t
/ فرار از کاراکترهای ویژه – برای مثال در صورتی که بخواهیم یک علامت دلار واقعی را مطابقت دهیم
REGEX HELLO WORLD
بنابراین اساسی ترین regex که می توانیم بنویسیم خود متن است! فرض کنید می خواهید نامی به عنوان مثال “بریجت” استخراج کنید، می توانید به معنای واقعی کلمه بریجت را بنویسید، بنابراین بیایید به ابزار آنلاین خود برویم و آن را پیدا کنیم
استفاده از اپراتورهای بیشتر
نترسید 😄 اصلاً هیچ چیز جالبی در آنجا اتفاق نمی افتد، بنابراین الگوی ما اکنون می گوید “خط را شروع کنید، بریجت را پیدا کنید، خط را ببندید”، همانطور که قبلاً بحث شد هویج ^ به این معنی است که خط با …. $ به معنای انتهای خط است، پس دوباره این الگو را پیدا کنید که در آن خط با کلمه Bridget شروع می شود و خط به پایان می رسد.
معرفی گروه ها برای مطابقت با الگوهای بیشتر
خوب پس اکنون regex ما فقط با این یک کلمه مطابقت دارد …. اما اگر بخواهیم بیشتر مطابقت دهیم چه؟ ما قرار نیست هر اسمی را بنویسیم 😂
برای این کار از کروشههای مربع برای استفاده از گروهبندی استفاده میکنیم، به این معنی که الگویی را برای من پیدا کنید که از این گروه از حروف یا اعداد یا کاراکترهای خاص تشکیل شده باشد، بنابراین بیایید یک regex بنویسیم که به سادگی با هر نامی مطابقت داشته باشد، سپس آن را گسترش میدهیم. این شامل کلمات بیشتری است که با فاصله از هم جدا شده اند و اساساً یک نام کامل را شبیه سازی می کند
حالا به تجسم و اینکه چگونه ما اکنون دو “بلوک” داریم توجه کنید، به سادگی می گوید، این الگو را برای من پیدا کنید که در آن یک حرف کوچک یا بزرگ بی نهایت با یک فاصله و به دنبال همان الگوی بلوک قبلی وجود دارد.
توجه سریع، انگلیسی زبان دوم من است، بنابراین توضیح من ممکن است کمی اشتباه یا نادرست باشد، پس لطفاً مرا ببخشید، سعی می کنم تا حد امکان ساده توضیح دهم و تصاویر را ارائه کنم
استفاده از REGEX برای اعتبارسنجی شماره تلفن ایالات متحده
اکنون که مقداری regex می دانیم، بیایید سعی کنیم یک شماره تلفن را تأیید کنیم، بنابراین یک شماره تلفن ایالات متحده شامل کد منطقه 3 رقمی به دنبال آن 3 رقم دیگر است که نشان دهنده یک دفتر مرکزی است، و به دنبال آن 4 رقمی که نشان دهنده شماره مشترک است، بنابراین باید شبیه به آن باشد. 202–555–0160 (یک عدد جعلی btw) و خط تیرهها را نیز اضافه میکنیم
ببینید الان چقدر آسان است 🙂 Regex تا اینجا آنقدر سرگرم کننده نیست 😍، توجه کنید که چگونه به سادگی خط تیره ها را اضافه کرده ایم زیرا آنها چیزی را در regex نشان نمی دهند، بنابراین به معنای واقعی کلمه همانطور که به نظر می رسند با آنها رفتار می شود، شما متوجه می شوید که چگونه ما اینطور هستیم تا حدی “رسم” کنید که داده های ما چگونه باید باشد؟ واقعا امیدوارم کلیک کرده باشه 🙂
اعتبارسنجی ایمیل با استفاده از REGEX
اکنون ما یک regex کلاسیک انجام می دهیم که یک آدرس ایمیل را تأیید می کند، اما به خاطر داشته باشید که این کاملاً اساسی است زیرا تصور می کنم الگوهای regex در سطح تولید واقعی بسیار پیچیده تر خواهند بود اما ما فقط برای سرگرمی در حال بررسی هستیم 🙂
این مثال نشان میدهد که چگونه میتوانیم چیزی بیش از اعداد و حروف را به گروه خود اضافه کنیم
استخراج قیمت از یک صفحه وب با REGEX
خوب، حالا یک مثال سرگرمکنندهتر (امیدوارم همینطور باشد) بنابراین فرض کنید در حال خراشیدن آمازون یا هر وبسایت دیگری هستید و نیاز به استخراج قیمت برای چیزی داشتید، خوب regex این کار را بسیار آسان میکند به علاوه ما در مورد فرار شخصیتها یاد خواهیم گرفت زیرا $ است. در حال حاضر یک اپراتور regex
ترجمه این است: با یک رقم (0-9) شروع می شود و با یک نقطه (بله ما مجبور بودیم از آن هم فرار کنیم) و سپس یک عدد دیگر و در آخر یک علامت دلار شروع می شود.
اما متوجه خواهید شد که regex ما فقط برای قیمتهایی با ممیز شناور و نه اعداد کامل مانند 14 دلار اعمال میشود، پس چگونه آن را برطرف کنیم؟
با استفاده از؟ اپراتور برای نشان دادن حضور اختیاری یک الگو
برای رسیدگی به موضوع فوق به خوبی از ? اپراتور به عبارت regex ما سیگنال می دهد که نیمه دوم قیمت در صورتی که به اعداد کامل برخورد کنیم اختیاری است، بنابراین بیایید به سرعت regex خود را اصلاح کنیم.
یادداشت های پایانی
مانند هر نرم افزار مرتبط، باید بیشتر تمرین کنید تا جایی که این مفهوم برای شما طبیعی شود و به یک عادت تبدیل شود، بنابراین از ابزار آنلاینی که در بالا ذکر کردم استفاده کنید و همیشه می توانید بیشتر بیاموزید و اگر نیاز به یادگیری دارید. بیشتر regex را دنبال کنید، زیرا بهترین راه برای یادگیری چیزی در کنار تمرین، استفاده از دانش جدید در حل مسائل خود است.
خیلی ممنونم اگر تا اینجا پیش رفتید و از خدا می خواهم که همیشه بتوانم مفیدترین مطالب را برای شما به ارمغان بیاورم و بتوانم به جامعه آنلاینی که من را به کسی که امروز هستم بازگردانم
من کاملاً درک می کنم که Regex برای یک برنامه نویس معمولی (از جمله خودم) یک موضوع جادوگری بسیار پیچیده و مرزی است، اما به من اعتماد کنید که بسیار قدرتمند است و در برخی موارد می تواند مشکلات را حل کند، بنابراین تصمیم گرفتم این وبلاگ ساده را جمع آوری کنم تا تمام تلاشم را برای آموزش به شما انجام دهم. به اندازه کافی رژکس بدون از دست دادن ذهن خود 🙂
اصول REGEX برای کنجکاوهای روح
بنابراین اگر میتوانستم 20 خط کد بنویسم تا از نوشتن regex جلوگیری کنم، این کار را انجام میدهم، اما هنوز در برخی موارد مفید است و یک راهحل معتبر است، بنابراین بیایید اصول اولیه و کافی را یاد بگیریم. regex
این وبلاگ یک زبان برنامه نویسی آگنوستیک خواهد بود، زیرا من از هیچ کدام به عنوان مثال استفاده نمی کنم، اما به جای استفاده از آن در یک زبان برنامه نویسی، به خود نحو پایبند هستم.
REGEX چیست و چرا به آن نیاز دارم
Regex تطبیق الگوی متنی است که به ما کمک میکند تکههای متن را مطابق الگویی که با استفاده از عملگرهای خاص مشخص میکنیم مطابقت دهیم، بنابراین این عملگرهای regex را به گونهای مرتب کنیم که هر کار پردازش متنی را که میتوانید تصور کنید، مرتب کنیم.
مثالها عبارتند از: اعتبارسنجی ایمیل، اعتبارسنجی شماره تلفن، اعتبارسنجی کد پستی، اعتبارسنجی کارت اعتباری، و غیره……
چگونه می توانم REGEX خود را تمرین کنم؟
ما از این ابزار آنلاین برای کمک به آزمایش و تجسم regex خود در زمان واقعی استفاده خواهیم کرد، این یک ابزار فوقالعاده عالی برای یادگیری است زیرا میتوانیم اشتباهات خود را ببینیم و همچنین بفهمیم چرا چنین الگوی کار میکند.
ما قصد داریم چند نمونه بسازیم تا به همان اندازه که برای شروع نیاز داریم regex یاد بگیریم و فعلاً کافی است تا زمانی که با چیزهای بسیار پیچیده روبرو شویم
- مثال شماره تلفن
- مثال ایمیل
- نمونه برچسب قیمت
- نمونه قالب تاریخ DD/MM/YYYY
شیت تقلب ما برای این آموزش
برای اینکه متمرکز بمانیم، این عملگرها را پوشش میدهیم، زیرا معتقدم آنها بیش از اندازه کافی هستند تا سر خود را در اطراف regex بپیچانیم، اما ناگفته نماند که regex میتواند بسیار پیچیده باشد، اما ما فقط به چیزهای کاملاً ابتدایی تطبیق الگو علاقه مند هستیم، بنابراین در اینجا برگه تقلب کوچک ما:
- ^ ابتدای یک خط
- $ انتهای خط
- [] گروه بندی – اساساً به معنای “محدوده” است [a-z]، [0–9]
- {} به این معنی است که چند بار می خواهید این الگو رخ دهد
- ? یک یا صفر بار با نام اپراتور اختیاری
- + حداقل یک یا چند بار، اساساً به این معنی است که برای من مهم نیست چند بار این الگو رخ می دهد
- * صفر یا چند بار
- \w با هر حرف، عدد و خط زیر مطابقت دارد
- \d فقط با تک رقمی مطابقت دارد
- فضای \s
- برگه \t
- / فرار از کاراکترهای ویژه – برای مثال در صورتی که بخواهیم یک علامت دلار واقعی را مطابقت دهیم
REGEX HELLO WORLD
بنابراین اساسی ترین regex که می توانیم بنویسیم خود متن است! فرض کنید می خواهید نامی به عنوان مثال “بریجت” استخراج کنید، می توانید به معنای واقعی کلمه بریجت را بنویسید، بنابراین بیایید به ابزار آنلاین خود برویم و آن را پیدا کنیم
استفاده از اپراتورهای بیشتر
نترسید 😄 اصلاً هیچ چیز جالبی در آنجا اتفاق نمی افتد، بنابراین الگوی ما اکنون می گوید “خط را شروع کنید، بریجت را پیدا کنید، خط را ببندید”، همانطور که قبلاً بحث شد هویج ^ به این معنی است که خط با …. $ به معنای انتهای خط است، پس دوباره این الگو را پیدا کنید که در آن خط با کلمه Bridget شروع می شود و خط به پایان می رسد.
معرفی گروه ها برای مطابقت با الگوهای بیشتر
خوب پس اکنون regex ما فقط با این یک کلمه مطابقت دارد …. اما اگر بخواهیم بیشتر مطابقت دهیم چه؟ ما قرار نیست هر اسمی را بنویسیم 😂
برای این کار از کروشههای مربع برای استفاده از گروهبندی استفاده میکنیم، به این معنی که الگویی را برای من پیدا کنید که از این گروه از حروف یا اعداد یا کاراکترهای خاص تشکیل شده باشد، بنابراین بیایید یک regex بنویسیم که به سادگی با هر نامی مطابقت داشته باشد، سپس آن را گسترش میدهیم. این شامل کلمات بیشتری است که با فاصله از هم جدا شده اند و اساساً یک نام کامل را شبیه سازی می کند
حالا به تجسم و اینکه چگونه ما اکنون دو “بلوک” داریم توجه کنید، به سادگی می گوید، این الگو را برای من پیدا کنید که در آن یک حرف کوچک یا بزرگ بی نهایت با یک فاصله و به دنبال همان الگوی بلوک قبلی وجود دارد.
توجه سریع، انگلیسی زبان دوم من است، بنابراین توضیح من ممکن است کمی اشتباه یا نادرست باشد، پس لطفاً مرا ببخشید، سعی می کنم تا حد امکان ساده توضیح دهم و تصاویر را ارائه کنم
استفاده از REGEX برای اعتبارسنجی شماره تلفن ایالات متحده
اکنون که مقداری regex می دانیم، بیایید سعی کنیم یک شماره تلفن را تأیید کنیم، بنابراین یک شماره تلفن ایالات متحده شامل کد منطقه 3 رقمی به دنبال آن 3 رقم دیگر است که نشان دهنده یک دفتر مرکزی است، و به دنبال آن 4 رقمی که نشان دهنده شماره مشترک است، بنابراین باید شبیه به آن باشد. 202–555–0160 (یک عدد جعلی btw) و خط تیرهها را نیز اضافه میکنیم
ببینید الان چقدر آسان است 🙂 Regex تا اینجا آنقدر سرگرم کننده نیست 😍، توجه کنید که چگونه به سادگی خط تیره ها را اضافه کرده ایم زیرا آنها چیزی را در regex نشان نمی دهند، بنابراین به معنای واقعی کلمه همانطور که به نظر می رسند با آنها رفتار می شود، شما متوجه می شوید که چگونه ما اینطور هستیم تا حدی “رسم” کنید که داده های ما چگونه باید باشد؟ واقعا امیدوارم کلیک کرده باشه 🙂
اعتبارسنجی ایمیل با استفاده از REGEX
اکنون ما یک regex کلاسیک انجام می دهیم که یک آدرس ایمیل را تأیید می کند، اما به خاطر داشته باشید که این کاملاً اساسی است زیرا تصور می کنم الگوهای regex در سطح تولید واقعی بسیار پیچیده تر خواهند بود اما ما فقط برای سرگرمی در حال بررسی هستیم 🙂
این مثال نشان میدهد که چگونه میتوانیم چیزی بیش از اعداد و حروف را به گروه خود اضافه کنیم
استخراج قیمت از یک صفحه وب با REGEX
خوب، حالا یک مثال سرگرمکنندهتر (امیدوارم همینطور باشد) بنابراین فرض کنید در حال خراشیدن آمازون یا هر وبسایت دیگری هستید و نیاز به استخراج قیمت برای چیزی داشتید، خوب regex این کار را بسیار آسان میکند به علاوه ما در مورد فرار شخصیتها یاد خواهیم گرفت زیرا $ است. در حال حاضر یک اپراتور regex
ترجمه این است: با یک رقم (0-9) شروع می شود و با یک نقطه (بله ما مجبور بودیم از آن هم فرار کنیم) و سپس یک عدد دیگر و در آخر یک علامت دلار شروع می شود.
اما متوجه خواهید شد که regex ما فقط برای قیمتهایی با ممیز شناور و نه اعداد کامل مانند 14 دلار اعمال میشود، پس چگونه آن را برطرف کنیم؟
با استفاده از؟ اپراتور برای نشان دادن حضور اختیاری یک الگو
برای رسیدگی به موضوع فوق به خوبی از ? اپراتور به عبارت regex ما سیگنال می دهد که نیمه دوم قیمت در صورتی که به اعداد کامل برخورد کنیم اختیاری است، بنابراین بیایید به سرعت regex خود را اصلاح کنیم.
یادداشت های پایانی
مانند هر نرم افزار مرتبط، باید بیشتر تمرین کنید تا جایی که این مفهوم برای شما طبیعی شود و به یک عادت تبدیل شود، بنابراین از ابزار آنلاینی که در بالا ذکر کردم استفاده کنید و همیشه می توانید بیشتر بیاموزید و اگر نیاز به یادگیری دارید. بیشتر regex را دنبال کنید، زیرا بهترین راه برای یادگیری چیزی در کنار تمرین، استفاده از دانش جدید در حل مسائل خود است.
خیلی ممنونم اگر تا اینجا پیش رفتید و از خدا می خواهم که همیشه بتوانم مفیدترین مطالب را برای شما به ارمغان بیاورم و بتوانم به جامعه آنلاینی که من را به کسی که امروز هستم بازگردانم