ইন্টারেক্টিভ কোর্স
রেজেক্স কোর্স
স্ক্র্যাচ থেকে রেগুলার এক্সপ্রেশন শিখুন, ইংরেজিতে, এমন একটি ইঞ্জিনের মাধ্যমে যা সরাসরি ব্রাউজারে প্রতিটি প্যাটার্ন চালায় এবং আপনাকে রিয়েল টাইমে মিল দেখায়।
01 · মডিউল 1 — মৌলিক
রেজেক্সের ভিত্তি: আক্ষরিক নিদর্শন, মৌলিক অক্ষর শ্রেণী, `.` ওয়াইল্ডকার্ড এবং এস্কেপিং মেটা-অক্ষর।
- 1.1আক্ষরিক নিদর্শনসাধারণ অক্ষর, কেস সংবেদনশীলতা এবং প্রথম রান: ম্যাচ এবং সূচক।~8 min
- 1.2মৌলিক ক্লাস: \d \w \sসংখ্যা, শব্দ অক্ষর এবং হোয়াইটস্পেস (এবং তাদের নেতিবাচক সংস্করণ) জন্য পূর্বনির্ধারিত ক্লাস।~10 min
- 1.3ওয়াইল্ডকার্ড: বিন্দু `.``.` অক্ষর প্রায় সবকিছুর সাথে মিলে যায়: এতে কী অন্তর্ভুক্ত আছে, কী বাদ রয়েছে এবং কেন `s` পতাকা গুরুত্বপূর্ণ।~8 min
- 1.4মেটা-ক্যারেক্টার এস্কেপিং12টি মেটা-অক্ষর যেগুলিকে `\` দিয়ে পালাতে হবে, যখন আপনার একটি ডবল ব্যাকস্ল্যাশ প্রয়োজন এবং কেন।~10 min
02 · মডিউল 2 — কোয়ান্টিফায়ার
কতটা পুনরাবৃত্তি করতে হবে: `*`, `+`, `?`, ব্যবধান `{n,m}` এবং লোভী এবং অলসের মধ্যে পার্থক্য।
- 2.1`*`, `+`, `?`শূন্য বা একাধিক, এক বা একাধিক, ঐচ্ছিক: তিনটি মৌলিক পরিমাপক।~10 min
- 2.2সঠিক পরিমাণ `{n,m}`ঠিক `n`, `n` থেকে `m` পর্যন্ত, অন্তত `n`: সাংখ্যিক পরিমাপক।~10 min
- 2.3লোভী বনাম অলসডিফল্ট কোয়ান্টিফায়াররা লোভী (`.*`); অলস সংস্করণের জন্য `?` যোগ করুন (`.*?`)।~10 min
- 2.4ব্যাকট্র্যাকিং: একটি ওভারভিউলোভী কোয়ান্টিফায়ার ব্যর্থ হলে ইঞ্জিন কী করে এবং কেন এটি ব্যয়বহুল হতে পারে।~12 min
03 · মডিউল 3 — অ্যাঙ্কর এবং সীমানা
অবস্থান, অক্ষর নয়: স্ট্রিংয়ের শুরু/শেষে, শব্দের সীমানায় এবং `m` পতাকা সহ প্রতিটি লাইনের শুরু/শেষে নোঙ্গর করা।
- 3.1শুরু এবং শেষ: `^` এবং `$`স্ট্রিং এর প্রথম বা শেষ অক্ষরে একটি প্যাটার্ন অ্যাঙ্করিং।~8 min
- 3.2শব্দের সীমানা: `\b` `\B`শব্দ এবং অ-শব্দ অক্ষরের মধ্যে রূপান্তর; পুরো শব্দ খুঁজে বের করা।~10 min
- 3.3`m` পতাকা: বহুরেখাপ্রতিটি লাইনের শুরু/শেষে `m` পতাকা, `^` এবং `$` অ্যাঙ্কর সহ।~10 min
- 3.4খালি লাইন এবং ছাঁটাদরকারী নিদর্শন: খালি লাইনের সাথে মিলে যাওয়া, একটি লাইনের শুরু/শেষে সাদা স্থান ছাঁটাই করা।~10 min
04 · মডিউল 4 — গোষ্ঠী এবং বিকল্প
`()` দিয়ে গোষ্ঠী করুন, `|` দিয়ে বিকল্পগুলির মধ্যে বেছে নিন, `(?:...)` দিয়ে ক্যাপচার করা এড়িয়ে চলুন, `(?<name>...)` দিয়ে গ্রুপের নাম করুন এবং ব্যাক-রেফারেন্স সহ আগের ক্যাপচারে ফিরে যান।
- 4.1ক্যাপচার গ্রুপ: `(...)`গ্রুপ এবং ক্যাপচার করার জন্য বন্ধনী; অ্যাক্সেস গ্রুপ 1, 2, 3… ম্যাচে।~10 min
- 4.2বিকল্প: `|`পাইপ দুই বা ততোধিক উপ-প্যাটার্নের মধ্যে বেছে নেয়; অগ্রাধিকার এবং বন্ধনী।~10 min
- 4.3নন-ক্যাপচারিং গ্রুপ: `(?:...)`একটি ক্যাপচার তৈরি না করেই গোষ্ঠী করুন: যখন আপনাকে শুধুমাত্র পরিমাপ বা বিকল্প করতে হবে তখন উপযোগী৷~10 min
- 4.4নামযুক্ত গ্রুপ এবং ব্যাক-রেফারেন্স`(?<name>...)` একটি নাম দিতে; `\1` `\k<name>` ক্যাপচারে ফিরে যাওয়ার জন্য।~12 min
05 · মডিউল 5 — অক্ষর ক্লাস
কাস্টম সেটগুলিকে `[...]` দিয়ে সংজ্ঞায়িত করুন, রেঞ্জ ব্যবহার করুন, `[^...]` দিয়ে নেগেট করুন এবং `\p{...}` এবং `u` পতাকা সহ ইউনিকোড বৈশিষ্ট্যে পৌঁছান।
- 5.1অক্ষর সেট: `[abc]`বর্গাকার বন্ধনী একটি অবস্থানে অনুমোদিত অক্ষরগুলির একটি সেট সংজ্ঞায়িত করে।~8 min
- 5.2ক্লাসের মধ্যে রেঞ্জ: `[a-z0-9]`ড্যাশ মাধ্যমে ব্যবধান; ব্যাপ্তি এবং একক অক্ষর একত্রিত করা।~8 min
- 5.3অস্বীকার: `[^...]`একটি নেগেটিভ ক্লাস **বাদে** তালিকাভুক্ত অক্ষরগুলির সাথে মেলে।~8 min
- 5.4ইউনিকোড সম্পত্তি অব্যাহতি`\p{L}`, `\p{N}`, `\p{Script=...}` `u` পতাকা সহ: শব্দার্থিক ইউনিকোড ক্লাস।~12 min
06 · মডিউল 6 — লুকঅ্যারাউন্ড
শূন্য-প্রস্থের দাবি: অক্ষর ব্যবহার না করে স্ট্রিংটিতে সামনে বা পিছনে তাকান। তাকান `(?=)` `(?!)`, পিছনে তাকান `(?<=)` `(?<!)`।
- 6.1ইতিবাচক দৃষ্টিভঙ্গি: `(?=...)`একটি নির্দিষ্ট প্যাটার্ন বর্তমান অবস্থান অনুসরণ করে তা ব্যবহার না করে পরীক্ষা করুন।~10 min
- 6.2নেতিবাচক দৃষ্টিভঙ্গি: `(?!...)`একটি নির্দিষ্ট প্যাটার্ন বর্তমান অবস্থান অনুসরণ করে না তা পরীক্ষা করুন।~10 min
- 6.3পিছনে তাকান: `(?<=...)` `(?<!...)`লুকঅ্যারাউন্ডের "লুক-অনপশ্চাদ" সংস্করণ; ES2018+ সমর্থন।~12 min
- 6.4অনুশীলনে চারপাশে তাকানপ্রসঙ্গ অন্তর্ভুক্ত না করে একটি মান বের করুন, পাসওয়ার্ড যাচাই করুন, সীমাবদ্ধ সংখ্যা পার্স করুন।~12 min
07 · মডিউল 7 — পতাকা, প্রতিস্থাপন, বিভক্ত
সমস্ত ফ্ল্যাগ (সহ। `d`, `v`), `String.prototype.replace`/`replaceAll`/`split` রেজেক্স সহ, প্রতিস্থাপন স্ট্রিং-এ `$1`/`$<name>` উল্লেখ করে এবং কলব্যাক প্রতিস্থাপন করে।
- 7.1বিস্তারিত সব পতাকা`g i m s u v y d`: প্রত্যেকে কী করে এবং কীভাবে তারা একত্রিত করে।~12 min
- 7.2মৌলিক প্রতিস্থাপন এবং `$1`একটি স্থির স্ট্রিং বা ব্যাক-রেফারেন্স `$1` / `$<name>` দিয়ে মিলগুলি প্রতিস্থাপন করুন।~10 min
- 7.3একটি কলব্যাক দিয়ে প্রতিস্থাপন করুনপ্রতিস্থাপন ফাংশন: নির্বিচারে জেএস কোড, গ্রুপগুলিতে অ্যাক্সেসের সাথে প্রতিটি ম্যাচকে রূপান্তর করুন।~12 min
- 7.4regex দিয়ে বিভক্ত করুনএকটি প্যাটার্নে একটি স্ট্রিং বিভক্ত করুন (অনুমতিমূলক CSV, ন্যূনতম টোকেনাইজার)।~10 min
08 · মডিউল 8 — অনুশীলন
বাস্তব সমস্যার জন্য এটি সব একসাথে রাখুন: ইমেল যাচাই করুন, লগ পার্স করুন, ইউআরএল/আইপি এক্সট্র্যাক্ট করুন, ReDoS-প্রতিরোধী প্যাটার্ন লিখুন।
- 8.1একটি ইমেল যাচাই করা হচ্ছেট্রেড-অফ ব্যাখ্যা সহ ইমেলের জন্য একটি "যথেষ্ট ভাল" প্যাটার্ন।~12 min
- 8.2অ্যাপাচি লগ পার্সারনামযুক্ত গ্রুপ ব্যবহার করে একটি লগ লাইন থেকে আইপি, পদ্ধতি, পথ এবং স্থিতি কোড বের করুন।~12 min
- 8.3ইউআরএল এবং আইপি বের করা হচ্ছেফ্রি-ফর্ম টেক্সটে http(গুলি) URL এবং IPv4 ঠিকানা চিনুন।~12 min
- 8.4ReDoS-নিরাপদ নিদর্শন লেখাবিপর্যয়মূলক প্যাটার্নগুলি চিনুন (`(a+)+b`), তাদের রিফ্যাক্টর করুন, পারমাণবিক-সদৃশ কোয়ান্টিফায়ার ব্যবহার করুন।~14 min