JavaRush /وبلاگ جاوا /Random-FA /RegEx: 20 گام کوتاه برای تسلط بر عبارات منظم. قسمت 1
Artur
مرحله
Tallinn

RegEx: 20 گام کوتاه برای تسلط بر عبارات منظم. قسمت 1

در گروه منتشر شد
اصل این مقاله اینجاست . احتمالاً چیزی به نام تئوری بیش از حد وجود ندارد و من در پایان مقاله چندین پیوند به مطالب دقیق تر در مورد regex ارائه خواهم داد. اما به نظرم می رسید که شروع به کندوکاو در موضوعی مانند عبارات منظم بسیار جالب تر خواهد بود اگر فرصتی وجود داشته باشد که نه تنها جمع آوری شود، بلکه فوراً دانش را با انجام کارهای کوچک در طول مسیر تثبیت کند. RegEx: 20 گام کوتاه برای تسلط بر عبارات منظم.  قسمت 1 - 1بیا شروع کنیم. معمولاً مخالفان استفاده از عبارات منظم ('RegEx' یا به سادگی 'regex') در برنامه نویسی به نقل قول زیر منسوب به جیمی زاوینسکی استناد می کنند: "بعضی از مردم وقتی با مشکلی مواجه می شوند، فکر می کنند، "می دانم، از عبارات منظم استفاده خواهم کرد." .'" الآن آن ها دو مشکل دارند". در واقع، استفاده از عبارات منظم هنوز ایده خوب یا بدی نیست. و این به خودی خود مشکلی را اضافه نمی کند و هیچ یک از آنها را حل نمی کند. این فقط یک ابزار است. و نحوه استفاده از آن (درست یا غلط) تعیین می کند که چه نتایجی خواهید دید. اگر سعی کنید از regex استفاده کنید، به عنوان مثال، برای ایجاد یک تجزیه کننده HTML، به احتمال زیاد درد را تجربه خواهید کرد . اما اگر فقط می خواهید مثلاً مهرهای زمانی را از برخی ردیف ها استخراج کنید، احتمالاً خوب خواهید بود. برای اینکه تسلط بر عبارات منظم را برای شما آسان‌تر کنم، این درس را گردآوری کرده‌ام که به شما کمک می‌کند تنها در بیست مرحله کوتاه، عبارات منظم را از ابتدا تسلط دهید. این آموزش عمدتاً بر مفاهیم اساسی عبارات منظم متمرکز است و فقط در صورت لزوم به موضوعات پیشرفته تر می پردازد.

مرحله 1: چرا از عبارات منظم استفاده می کنیم؟

RegEx: 20 گام کوتاه برای تسلط بر عبارات منظم.  قسمت 1 - 2عبارات منظم برای جستجوی مطابقت در متن با استفاده از الگوهای (الگوهای) مشخص شده استفاده می شود. با استفاده از regex، می‌توانیم به راحتی و به سادگی کلمات را از متن و همچنین شخصیت‌های تحت اللفظی و متا و دنباله‌های آنها که معیارهای خاصی را برآورده می‌کنند استخراج کنیم. این چیزی است که ویکی‌پدیا در مورد آن‌ها به ما می‌گوید : عبارات منظم، زبانی رسمی برای جستجو و دستکاری زیر رشته‌ها در متن، بر اساس استفاده از فراکاراکترها (کاراکترهای عام) هستند. برای جستجو، از یک رشته نمونه (الگوی انگلیسی، در روسی که اغلب به آن "الگو"، "ماسک" می گویند) استفاده می شود که از نمادها و متاسامبل ها تشکیل شده و قانون جستجو را تعریف می کند. برای دستکاری متن، یک رشته جایگزین نیز مشخص شده است که می تواند شامل کاراکترهای ویژه نیز باشد. الگو می تواند به سادگی کلمه dogدر این جمله باشد:
روباه قهوه ای سریع از روی سگ تنبل می پرد.
این عبارت منظم به شکل زیر است:
سگ
... به اندازه کافی آسان است، اینطور نیست؟ الگو همچنین می تواند هر کلمه ای باشد که حاوی حرف باشد o. یک عبارت منظم برای یافتن چنین الگویی ممکن است به شکل زیر باشد:
\ وای * _
( می توانید این عبارت منظم را در اینجا امتحان کنید .) متوجه خواهید شد که با پیچیده تر شدن الزامات "تطابق"، عبارت منظم نیز پیچیده تر می شود. اشکال دیگری از علامت گذاری برای تعیین گروهی از کاراکترها و تطبیق الگوهای تکراری وجود دارد که در زیر توضیح خواهم داد. اما، به محض اینکه ما مطابق با یک الگو در متنی پیدا کردیم، با آن چه کاری می توانیم انجام دهیم؟ موتورهای بیان منظم مدرن به شما این امکان را می‌دهند که کاراکترها یا دنباله‌ای از کاراکترها (رشته‌های فرعی) را از متن موجود استخراج کنید یا آنها را حذف کنید یا با متن دیگری جایگزین کنید. به طور کلی، عبارات منظم برای تجزیه و دستکاری متن استفاده می شود. برای مثال می‌توانیم زیر رشته‌هایی را که شبیه آدرس‌های IP هستند استخراج کنیم و سپس سعی کنیم آنها را تأیید کنیم. یا می توانیم نام ها و آدرس های ایمیل را استخراج کرده و در یک پایگاه داده ذخیره کنیم. یا از عبارات منظم برای یافتن اطلاعات حساس (مانند شماره گذرنامه یا شماره تلفن) در ایمیل ها استفاده کنید و به کاربر هشدار دهید که ممکن است خود را در معرض خطر قرار دهد. Regex واقعاً یک ابزار همه کاره است که یادگیری آن آسان است اما تسلط بر آن دشوار است: "همانطور که بین پخش خوب یک قطعه موسیقی و ایجاد موسیقی تفاوت وجود دارد، بین دانستن عبارات منظم و درک آنها نیز تفاوت وجود دارد." - جفری E. F. Friedl، تسلط بر عبارات منظم

مرحله 2: براکت های مربعی[]

ساده ترین عبارات منظم که به راحتی قابل درک هستند آنهایی هستند که به سادگی به دنبال تطبیق کاراکتر به نویسه بین الگوی عبارت منظم و رشته هدف می گردند. به عنوان مثال، بیایید سعی کنیم یک گربه پیدا کنیم: RegEx: 20 گام کوتاه برای تسلط بر عبارات منظم.  قسمت 1 - 3
الگو: گربه
رشته: گربه وقتی زیر ماشین دوید بریده شد.
مسابقات:      ^^^
( چگونه در عمل کار می کند - اینجا را ببینید ) NB! همه راه حل ها در اینجا فقط به عنوان راه حل های ممکن ارائه شده اند. در عبارات منظم، مانند برنامه نویسی به طور کلی، می توانید مسائل مشابه را به روش های مختلف حل کنید. با این حال، علاوه بر یک مقایسه دقیق کاراکتر به کاراکتر، می‌توانیم مطابقت‌های جایگزین را با استفاده از براکت‌های مربع نیز مشخص کنیم:
الگو: ca[rt]
رشته: گربه وقتی زیر ماشین دوید بریده شد.
مسابقات:      ^^^ ^^^
( چگونه کار می کند ) باز کردن و بستن براکت های مربع به موتور عبارت منظم می گوید که باید با هر یک از نویسه های مشخص شده مطابقت داشته باشد، اما فقط با یک کاراکتر. عبارت منظم بالا، برای مثال، cartکل کلمه را پیدا نمی کند، بلکه تنها بخشی از آن را پیدا می کند:
الگو: ca[rt]
ریسمان: گربه هنگام دویدن زیر گاری بریده شد.
مسابقات:      ^^^ ^^^
( چگونه کار می کند ) وقتی از براکت استفاده می کنید، به موتور عبارت منظم می گویید که فقط با یکی از کاراکترهای موجود در براکت ها مطابقت داشته باشد. موتور شخصیت را پیدا می کند c، سپس شخصیت را پیدا می کند a، اما اگر شخصیت بعدی rیا نیست t، پس این یک تطابق کامل نیست. اگر پیدا کرد ca، و سپس یا r، یا t، متوقف می شود. سعی نمی‌کند کاراکترهای بیشتری را مطابقت دهد، زیرا کروشه‌های مربع نشان می‌دهند که فقط یکی از نویسه‌های موجود باید مطابقت داشته باشد. وقتی پیدا کرد در کلمه next caپیدا می کند و متوقف می شود زیرا قبلاً مطابقت با دنباله پیدا کرده است . rcartcar

اهداف آموزشی:

یک عبارت منظم بنویسید که با تمام 10 الگوی این گزیده از جناس های غیرقابل ترجمه در گویش محلی مطابقت داشته hadباشد Had:
الگو:
string: جیم، جایی که بیل "داشت" داشت ، "داشته بود" داشت . "داشته بود" درست بود.
مسابقات:                  ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^
( راه حل ممکن را اینجا ببینید ) در مورد نام همه حیوانات در جمله زیر چطور؟
الگو:
رشته: یک خفاش، یک گربه و یک موش وارد یک بار شدند...
مسابقات:    ^^^ ^^^ ^^^
( راه حل ممکن ) یا حتی ساده تر: کلمات barیا bat:
الگو:
رشته: یک خفاش، یک گربه و یک موش وارد یک بار شدند...
مسابقات:    ^^^ ^^^
( راه حل ممکن ) حالا ما یاد گرفته ایم که چگونه عبارات منظم کم و بیش پیچیده بنویسیم و فقط در مرحله 2 هستیم! بیا ادامه بدهیم!

مرحله 3: دنباله های فرار

RegEx: 20 گام کوتاه برای تسلط بر عبارات منظم.  قسمت 1 - 4در مرحله قبل، در مورد براکت ها []و اینکه چگونه آنها به ما کمک می کنند تا با استفاده از موتور regex، مطابقت های جایگزین را پیدا کنیم، آشنا شدیم. اما اگر بخواهیم مطابق با براکت های باز و بسته خود را پیدا کنیم چه []؟ وقتی می‌خواستیم تطبیق کاراکتر به کاراکتر کلمه را پیدا کنیم cat، موتور regex را با این دنباله از کاراکترها ( ) ارائه کردیم cat. بیایید سعی کنیم براکت ها را []به همین ترتیب پیدا کنیم:
الگو: [] 
string: با استفاده از regex نمی توانید [] را مطابقت دهید! از این کار پشیمان خواهید شد!
مسابقات: 
( ببینیم چه اتفاقی افتاده است ) با این حال، چیزی کار نکرد... این به این دلیل است که کاراکترهای براکت مربع به عنوان کاراکترهای موتور regex خاصی عمل می کنند که معمولاً برای نشان دادن چیز دیگری استفاده می شوند و الگوی تحت اللفظی برای مطابقت با آنها نیستند. همانطور که از مرحله 2 به یاد داریم، آنها برای یافتن مطابقت های جایگزین استفاده می شوند تا موتور regex بتواند با هر یک از کاراکترهای موجود بین آنها مطابقت داشته باشد. اگر هیچ کاراکتری را بین آنها قرار ندهید، ممکن است باعث خطا شود. برای مطابقت با این کاراکترهای خاص، باید با یک کاراکتر بک اسلش از آنها فرار کنیم \. بک اسلش (یا بک اسلش) کاراکتر ویژه دیگری است که به موتور regex می گوید به جای استفاده از آن به عنوان متاکاراکتر، به دنبال کاراکتر بعدی به معنای واقعی کلمه باشد. موتور regex فقط به دنبال کاراکترها خواهد بود [و ]به معنای واقعی کلمه اگر قبل از هر دو علامت بک اسلش باشد:
الگو: \[\]
string: با استفاده از regex نمی توانید [] را مطابقت دهید! از این کار پشیمان خواهید شد!
مسابقات:                  ^^ 
( بیایید ببینیم این بار چه اتفاقی افتاده است ) خوب، اگر بخواهیم خود اسلش را پیدا کنیم چه؟ پاسخ ساده است. از آنجایی که بک اسلش \نیز یک شخصیت خاص است، باید از آن نیز فرار کرد. چگونه؟ بک اسلش!
الگو: \\
رشته: C:\Users\Tanja\Pictures\Dogs
مسابقات:    ^ ^ ^ ^
( همان مثال در عمل ) فقط کاراکترهای خاص باید قبل از یک علامت بک اسلش باشند. همه کاراکترهای دیگر به صورت پیش فرض به معنای واقعی کلمه تفسیر می شوند. به عنوان مثال، عبارت منظم tبه معنای واقعی کلمه فقط tبا حروف کوچک مطابقت دارد:
الگو: t
رشته: tttt
مسابقات: ^ ^ ^ ^
( مثال ) با این حال، این دنباله \tمتفاوت عمل می کند. این یک الگو برای جستجوی یک کاراکتر برگه است:
الگو: \t
رشته: tttt
مسابقات:   ^ ^ ^
( مثال ) برخی از دنباله های فرار رایج عبارتند از \n(شکست خط به سبک یونیکس) و \r(مورد استفاده در شکست خط به سبک ویندوز \r\n). \rیک کاراکتر «بازگشت کالسکه» و \nیک کاراکتر «فید خط» است، که هر دوی آنها همراه با استاندارد ASCII زمانی که دستگاه‌های تله تایپ‌کننده هنوز در حال استفاده گسترده بودند، تعریف شده‌اند. سایر سکانس های فرار متداول بعداً در این آموزش پوشش داده خواهد شد.

در ضمن، بیایید مطالب را با چند پازل ساده تلفیق کنیم:

سعی کنید یک عبارت منظم بنویسید تا ... یک عبارت منظم را پیدا کنید ;) نتیجه باید چیزی شبیه به این باشد:
الگو:
رشته: ... این regex \ [\] ` را با یک regex مطابقت دهید؟
مسابقات:                       ^^^^	
( راه حل ) آیا موفق شدید؟ آفرین! اکنون سعی کنید یک regex برای جستجوی دنباله های فرار مانند زیر ایجاد کنید:
الگو:
رشته: ` \r` ، ` \t` ، و ` \n` همگی دنباله‌های فرار regex هستند.
مسابقات:   ^^ ^^ ^^
( راه حل )

مرحله 4: با استفاده از نقطه به دنبال کاراکتر "هر" بگردید.

RegEx: 20 گام کوتاه برای تسلط بر عبارات منظم.  قسمت 1 - 5هنگام نوشتن راه حل های تطبیق دنباله فرار که در مرحله قبل دیدیم، ممکن است از خود پرسیده باشید: «آیا می توانم کاراکتر بک اسلش و سپس هر کاراکتر دیگری که آن را دنبال می کند مطابقت دهم؟»... البته که می توانید! کاراکتر ویژه دیگری وجود دارد که برای مطابقت (تقریبا) هر کاراکتری استفاده می شود - کاراکتر نقطه (ایست کامل). در اینجا چیزی است که انجام می دهد:
الگو: .
رشته: متاسفم دیو. می ترسم نتوانم این کار را انجام دهم.
مسابقات: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^	
( مثال ) اگر فقط می خواهید الگوهایی را که شبیه دنباله های فرار هستند مطابقت دهید، می توانید کاری شبیه به این انجام دهید:
الگو: \\. 
string: سلام والمارت نوه من است و نام او " \n\r\t " است.
مسابقات:                                              ^^ ^^ ^^	
( مثال ) و مانند همه کاراکترهای خاص، اگر می‌خواهید یک حرف را مطابقت دهید .، باید قبل از آن یک کاراکتر قرار دهید \:
الگو: \. 
رشته: جنگ صلح است . آزادی بردگی است . جهل قدرت است . 
مسابقات:             ^ ^ ^
( مثال )

مرحله 5: محدوده کاراکترها

RegEx: 20 گام کوتاه برای تسلط بر عبارات منظم.  قسمت 1 - 6اگر به هیچ علامتی نیاز ندارید، اما فقط می خواهید حروف را در متن پیدا کنید، چه؟ یا اعداد؟ یا حروف صدادار؟ جستجو بر اساس کلاس های کاراکتر و محدوده آنها به ما امکان می دهد تا به این هدف برسیم.
" \n "، " \r "، و " \t " کاراکترهای فضای خالی " \ " هستند . `، ` \\ ` و ` \[ ` نیستند .	
اگر کاراکترها علامت قابل مشاهده ای در متن ایجاد نکنند "فضای سفید" هستند. فاصله " " یک فاصله، شکست خط یا برگه است. فرض کنید می‌خواهیم دنباله‌های فرار را پیدا کنیم که فقط کاراکترهای فضای خالی را نشان می‌دهند \n، \rو \tدر قسمت بالا، اما نه دنباله‌های فرار دیگر. چگونه می توانستیم این کار را انجام دهیم؟
الگو: \\[nrt] 
رشته: ` \n` ، ` \r` و ` \t` کاراکترهای فضای خالی، ` \. `، ` \\ ` و ` \[ ` نیستند .
مسابقات:   ^^ ^^ ^^	
( مثال ) این کار می کند، اما راه حل خیلی ظریفی نیست. اگر بعداً لازم باشد دنباله فرار را برای کاراکتر "فید فرم" مطابقت دهیم، چه \f؟ (این نماد برای نشان دادن شکستگی صفحه در متن استفاده می شود.)
الگو: \\[nrt] 
رشته: ` \n` ، ` \r` ، ` \t` و ` \f` کاراکترهای فضای خالی، ` \ هستند . `، ` \\ ` و ` \[ ` نیستند .
مسابقات:   ^^ ^^ ^^	
( راه حل کار نمی کند ) با این روش، باید هر حرف کوچکی را که می خواهیم مطابقت دهیم، به طور جداگانه در پرانتز فهرست کنیم. یک راه ساده تر برای انجام این کار استفاده از محدوده کاراکترها برای مطابقت با حروف کوچک است:
الگو: \\[az] 
رشته: ` \n` ، ` \r` ، ` \t` و ` \f` کاراکترهای فضای خالی، ` \ هستند . `، ` \\ ` و ` \[ ` نیستند .
مسابقات:   ^^ ^^ ^^ ^^	
( و این در حال حاضر کار می کند ) با توجه به مثال بالا، محدوده کاراکترها همانطور که انتظار دارید کار می کنند. دور اولین و آخرین حروفی که می‌خواهید با هم مطابقت داشته باشند، براکت‌های مربعی قرار دهید و یک خط فاصله بین آن‌ها قرار دهید. \برای مثال، اگر فقط می‌خواهید «مجموعه‌هایی» از بک اسلش و یک حرف از aبه را پیدا کنید m، می‌توانید کارهای زیر را انجام دهید:
الگو: \\[am] 
رشته: ` \n` ، ` \r` ، ` \t` و ` \f` کاراکترهای فضای خالی، ` \ هستند . `، ` \\ ` و ` \[ ` نیستند .
مسابقات:                         ^^	
( مثال ) اگر می خواهید چندین محدوده را مطابقت دهید، به سادگی آنها را از انتها به انتها بین پرانتزهای مربع قرار دهید:
الگو: \\[a-gq-z] 
رشته: ` \n` , ` \r` , ` \t` و ` \f` کاراکترهای فضای خالی، ` \. `، ` \\ ` و ` \[ ` نیستند .
مسابقات:         ^^ ^^ ^^	
( مثال ) سایر محدوده های کاراکتر رایج عبارتند از: A-Zو0-9

بیایید آنها را در عمل امتحان کنیم و چند مشکل را حل کنیم:

اعداد هگزادسیمال می توانند شامل ارقام 0-9و همچنین حروف باشند A-F. هنگامی که برای تعیین رنگ ها استفاده می شود، کدهای هگزادسیمال می توانند حداکثر دارای سه کاراکتر باشند. یک عبارت منظم برای پیدا کردن کدهای هگزادسیمال معتبر در لیست زیر ایجاد کنید:
الگو:
رشته: 1H8 4E2 8FF 0P1 T8B 776 42B G12
مسابقات:      ^^^ ^^^ ^^^ ^^^	
( راه حل ) با استفاده از محدوده کاراکترها، یک عبارت منظم ایجاد کنید که فقط صامت های کوچک (نه حروف صدادار، از جمله y) را در جمله زیر انتخاب می کند:
الگو:رشته 
: هيجان انگيز است . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  _ _ _ _
مسابقات:   ^ ^ ^^^ ^ ^^ ^ ^^ ^ ^ ^ ^^^ ^ ^ ^^^ ^ ^^	
( راه حل )

گام ششم: نماد "نه"، حفره، حاشیه، چرخش...^

RegEx: 20 گام کوتاه برای تسلط بر عبارات منظم.  قسمت 1 - 7در واقع، بیش از 9000 نام برای این نماد وجود دارد :) اما، برای سادگی، شاید ما روی "نه" تمرکز کنیم. راه حل من برای مشکل آخر کمی طولانی است. برای گفتن "کل الفبا به جز حروف صدادار را دریافت کنید" 17 کاراکتر طول کشید. البته راه ساده تری برای این کار وجود دارد. علامت "نه" ^به ما اجازه می دهد تا کاراکترها و محدوده هایی از کاراکترها را مشخص کنیم که نباید با موارد مشخص شده در الگو مطابقت داشته باشند. یک راه حل ساده تر برای آخرین مشکل بالا، یافتن کاراکترهایی است که مصوت ها را نشان نمی دهند:
الگو: [^aeiou] 
string:   Th e w a lls i n th e m a ll a r e t o t a lly, t o t a lly  t a ll. 
مسابقات: ^^ ^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^	
( مثال ) علامت "not" ^به عنوان سمت چپ ترین کاراکتر در داخل کروشه []به موتور عبارت منظم می گوید که با یک (هر) کاراکتری که در کروشه نیست مطابقت دهد. این بدان معنی است که عبارت منظم فوق با تمام فاصله ها، نقطه ها .، کاماها ,و حروف بزرگ Tدر ابتدای جمله مطابقت دارد. برای حذف آنها، می توانیم آنها را در پرانتز قرار دهیم:
الگو: [^aeiou .,T] string  
: T h e w a lls i n th e m a ll a r e t o t ally , t o t a lly t a ll . 
مسابقات:   ^ ^ ^^^ ^ ^^ ^ ^^ ^ ^ ^ ^^^ ^ ^ ^^^ ^ ^^	
( مثال ) توجه داشته باشیدکه در این مورد، نیازی نیست که مانند قبل زمانی که بدون استفاده از براکت به دنبال آن بودیم، با یک بک اسلش فرار کنیم. بسیاری از نویسه‌های خاص در براکت‌های مربع به معنای واقعی کلمه مورد بررسی قرار می‌گیرند، از جمله کاراکتر براکت باز [- اما نه بسته ](می‌توانید حدس بزنید چرا؟). شخصیت بک اسلش \نیز به معنای واقعی کلمه تفسیر نمی شود. اگر می‌خواهید یک بک اسلش تحت اللفظی را \با استفاده از براکت‌های مربع مطابقت دهید، باید با استفاده از بک اسلش زیر از آن فرار کنید \\. این رفتار به گونه‌ای طراحی شده است که کاراکترهای فضای خالی را نیز می‌توان برای تطبیق در کروشه‌های مربع قرار داد:
الگو: [\t]
رشته: tttt
مسابقات:   ^ ^ ^
( مثال ) علامت "نه" را ^می توان با محدوده ها نیز استفاده کرد. اگر می‌خواستم فقط شخصیت‌های a, b, c, xو yرا ثبت کنم z، می‌توانستم کاری شبیه به این انجام دهم:
الگو: [abcxyz] 
رشته:   abc defghijklmnopqrstuvw xyz 
مطابقت دارد: ^^^ ^^^
( مثال ) ... یا می توانم مشخص کنم که می خواهم هر شخصیتی را پیدا کنم که بینd و w:
الگو: [^dw] 
رشته:   abc defghijklmnopqrstuvw xyz 
مطابقت دارد: ^^^ ^^^
( مثال ) با این حال،مراقب باشبا "نه" ^. فکر کردن آسان است "خب، من مشخص کردم ، بنابراین باید یک حرف کوچک یا چیزی بعد از آن [^ b-f]بگیرم . اینطور نیست. این regex با هر کاراکتری که در آن محدوده نیست، از جمله حروف، اعداد، علائم نگارشی و فاصله ها مطابقت دارد. af
الگو: [^dw] 
رشته:   abc defg h . i , j - klmnopqrstuvw xyz 
matches: ^^^ ^ ^ ^ ^ ^^^
( مثال )

تراز کردن وظایف:

از علامت "نه" ^در پرانتز برای مطابقت با تمام کلمات زیر استفاده کنید که به علامت ختم نمی شوند y:
الگو:رشته: سگ 
روز خوگ یونجه باتلاق بی ری rub 
مسابقات:      ^^^ ^^^ ^^^ ^^^	
( راه حل ) یک عبارت منظم با استفاده از یک محدوده و یک علامت "نه" بنویسید ^تا تمام سال های بین 1977 و 1982 را بیابید (شامل):
الگو:
رشته: 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984
مسابقات:            ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ ^^^^
( راه حل ) یک عبارت منظم بنویسید تا همه کاراکترهایی را که علامت "نه" نیستند پیدا کنید ^:
الگو:
رشته:   abc1 ^ 23*() 
مطابقت دارد: ^^^^ ^^^^^	
( راه حل )

مرحله 7: کلاس های شخصیت

کلاس های کاراکتر حتی ساده تر از محدوده کاراکترها هستند. موتورهای بیان منظم مختلف کلاس‌های مختلفی دارند، بنابراین من در اینجا فقط به موارد اصلی می‌پردازم. (بررسی کنید که از کدام نسخه regex استفاده می کنید، زیرا ممکن است تعداد بیشتری از آنها وجود داشته باشد - یا ممکن است با موارد نشان داده شده در اینجا متفاوت باشند.) کلاس های کاراکتر تقریباً مانند محدوده ها کار می کنند، اما شما نمی توانید مقادیر "شروع" و "پایان" را مشخص کنید:
کلاس نمادها
\d "شماره"[0-9]
\w "نمادهای کلمه"[A-Za-z0-9_]
\s "فضاها"[ \t\r\n\f]
کلاس کاراکتر "word" \wبه ویژه مفید است زیرا این مجموعه کاراکتر اغلب برای شناسه های معتبر (نام متغیرها، نام توابع و غیره) در زبان های برنامه نویسی مختلف مورد نیاز است. ما می توانیم \wبرای ساده سازی عبارت منظمی که قبلا دیدیم استفاده کنیم:
الگو: \\[az] 
رشته: ` \n` ، ` \r` ، ` \t` و ` \f` کاراکترهای فضای خالی، ` \ هستند . `، ` \\ ` و ` \[ ` نیستند .
مسابقات:   ^^ ^^ ^^ ^^	
با استفاده \wاز این می توانیم بنویسیم:
الگو: \\\w 
رشته: ` \n` , ` \r` , ` \t` و ` \f` کاراکترهای فضای خالی، ` \ هستند . `، ` \\ ` و ` \[ ` نیستند .
مسابقات:   ^^ ^^ ^^ ^^	
( مثال )

2 کار برای شانس:

همانطور که من و شما می دانیم، در جاوا، یک شناسه (نام متغیر، کلاس، تابع و غیره) فقط می تواند با حرف a- zA- Z، علامت دلار $یا زیرخط شروع شود _. ( البته خط کشیدن به سبک بدی است، اما کامپایلر آن را نادیده می گیرد، یادداشت مترجم ). بقیه کاراکترها باید کاراکترهای "کلمه" باشند \w. با استفاده از یک یا چند کلاس کاراکتر، یک عبارت منظم برای جستجوی شناسه های معتبر جاوا در میان دنباله های سه نویسه زیر ایجاد کنید:
الگو:
رشته:   __e $12 .x2 foo Bar 3mm
مسابقات: ^^^ ^^^ ^^^ ^^^	
( راه حل ) شماره های تامین اجتماعی ایالات متحده (SSN) اعداد 9 رقمی در قالب XXX-XX-XXXX هستند که هر X می تواند هر رقمی باشد [0-9]. با استفاده از یک یا چند کلاس کاراکتر، یک عبارت منظم بنویسید تا SSN های فرمت شده درست را در لیست زیر پیدا کنید:
الگو:
رشته: 113-25=1902 182-82-0192 H23-_3-9982 1I1-O0-E38B
مسابقات:              ^^^^^^^^^^^
( راه حل ) RegEx: 20 گام کوتاه برای تسلط بر عبارات منظم. قسمت 2. 20 گام کوتاه برای تسلط بر عبارات منظم. بخش 3. RegEx: 20 گام کوتاه برای تسلط بر عبارات منظم. قسمت 4.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION