Telegram Web
دیروز داشتم روی یه پروژه کار میکردم ک برای انجام دادن یه مرحله نیاز به گرفتن یه لیست آی پی از کاربر بود.
در واقع ما از کاربر یه فایل می‌گرفتیم ک باید شامل تعدادی آی‌پی آدرس برای انجام یه سری فرآیند های تست نفوذ می‌بود.
حالا یه مشکلی که بهش برخوردیم این بود که اگه کاربر توی فایلش چیزی غیر آی‌پی وارد می‌کرد کل برنامه توی مرحله پینگ آیپی fail میشد و کرش میداد.

اینجا بود که Regex وارد کار شد.
امروز میخوام بهتون توضیح بدم که چطور کار میکنه:)
#include <regex>
std::regex ip_ex("^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$");

این کدیه که استفاده کردیم. حالا بیاید توضیح بدم که چطوری کار میکنه و بخش به بخش بریم جلو👇
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
خلاصه اینکه، RegEx توی پروژه ها میتونه خیلی کمکتون میکنه. از این به بعد سعی میکنیم راجب Regex بیشتر حرف بزنیم و باهم دیگه چیزای جدیدی راجبش یاد بگیریم:)
دفعه بعد، باهم از بیسیک regex و ساختارش بیشتر حرف میزنیم و البته که توی گیت هاب یه پروژه هم میزارم ک بخونید و با اون کار کنید;)
https://regexr.com/85d19

اینم لینکش در صورتی که خواستید بخش به بخشش رو ببینید چطور کار میکنه و آنلاین تست بکنیدش:)
کوئیز بزاریم از RegEx؟ جوابش رو هم بعدش به صورت ویدئو ای در اختیارتون میزاریم
Anonymous Poll
80%
آره
20%
نه
کدوم یکی از این گزینه ها، همه فاصله ها، تب ها یا خط جدید رو تطبیق میده؟
Anonymous Quiz
29%
\b
49%
\s
22%
$
کدوم یکی از رجکس های زیر کلمه Hello یا World رو تطبیق میده؟
Anonymous Quiz
38%
Hello|World
21%
Hello,World
42%
Hello | World
کدوم یکی از پروژه های OpenCV زیر رو دوست دارید توی کانال باهم انجام بدیم؟

هرچند سخت ولی حال میده😂
Final Results
19%
شبیه ساز کنکور
33%
ایاب و ذهاب کارمندان به کمک تشخیص چهره
47%
تشخیص اشیا و علامت اون ها از یک ویدئو
Tp hunters cpp
خروجی رجکس زیر؟
Fr[ea]nc[eh]$
یه کتاب براتون آپلود میکنم راجب ریجکس اگه خواستید بخونید خیلی کمکتون میکنه
درس روز 1: مقدمه‌ای بر Regex در C++ و کاربردهای آن

1. تعریف Regex:
از Regular Expressions یا Regex برای تطابق و پردازش الگوهای رشته‌ای استفاده می‌شود. از کلاس‌های مختلفی مثل std::regex برای ایجاد الگوها و std::regex_match و std::regex_search برای تطابق الگو با رشته‌ها استفاده می‌شود.

2. کاربرد Regex:
- اعتبارسنجی ورودی کاربر: مثلاً بررسی کنید آیا فرمت یک ایمیل یا شماره تلفن صحیح است.
- جستجو در متن: پیدا کردن کلمات خاص یا الگوهای مشخص در یک متن طولانی.
- جایگزینی متن: تغییر دادن بخش‌های خاصی از متن با یک مقدار جدید.

3. کتابخانه مورد نیاز:
برای استفاده از Regex در C++، باید کتابخانه <regex> را وارد برنامه کنید:
#include <regex>


4. مثال ساده از استفاده Regex در C++:
ابتدا به یک مثال ساده نگاه کنیم تا نحوه استفاده از Regex در C++ را درک کنید:

مثال 1: تطابق یک کلمه با استفاده از std::regex_match
#include <iostream>
#include <regex>

int main() {
std::string text = "hello";
std::regex pattern("hello");

if (std::regex_match(text, pattern)) {
std::cout << "Matched!" << std::endl;
} else {
std::cout << "Not Matched!" << std::endl;
}
return 0;
}

در این کد، اگر رشته "hello" با الگوی hello مطابقت داشته باشد، پیام "Matched!" چاپ می‌شود.

مثال 2: جستجوی یک الگو در متن با استفاده از std::regex_search
#include <iostream>
#include <regex>

int main() {
std::string text = "hello world";
std::regex pattern("world");

if (std::regex_search(text, pattern)) {
std::cout << "Pattern found!" << std::endl;
} else {
std::cout << "Pattern not found!" << std::endl;
}
return 0;
}

در اینجا، برنامه در متن "hello world" به دنبال الگوی "world" می‌گردد و اگر پیدا کند، پیام "Pattern found!" را چاپ می‌کند.

5. تمرین عملی روز 1:
1. یک برنامه ساده بنویسید که یک رشته ورودی از کاربر بگیرد و با استفاده از std::regex_match بررسی کند که آیا ورودی با یک الگوی ساده مثل "hello" مطابقت دارد یا خیر.
2. سپس از std::regex_search استفاده کنید تا در یک رشته بزرگ‌تر به دنبال کلمه خاصی بگردید.
https://regex101.com
یکی از بهترین سایت‌ها برای تمرین RegEx که می‌تونید پترن‌هاتون رو تست کنین و توضیحات مربوط بهش رو ببینین.
Tp hunters cpp
درس روز 1: مقدمه‌ای بر Regex در C++ و کاربردهای آن 1. تعریف Regex: از Regular Expressions یا Regex برای تطابق و پردازش الگوهای رشته‌ای استفاده می‌شود. از کلاس‌های مختلفی مثل std::regex برای ایجاد الگوها و std::regex_match و std::regex_search برای تطابق الگو…
درس روز 2: حروف عادی و کاراکترهای ویژه در Regex

1. حروف عادی (Literal Characters):
حروف عادی به هر کاراکتری گفته می‌شود که معنای خاصی در Regex ندارد و دقیقاً همان چیزی است که در رشته به دنبال آن می‌گردیم.
برای مثال: a به معنای تطبیق با حرف کوچک a یا 1 به معنای تطبیق با عدد 1

مثال:
#include <iostream>
#include <regex>

int main() {
std::string text = "hello123";
std::regex pattern("hello");

if (std::regex_search(text, pattern)) {
std::cout << "Pattern found!" << std::endl;
}
return 0;
}

در این مثال، الگوی hello به دنبال رشته "hello" در متن می‌گردد.

2. کاراکترهای ویژه (Special Characters):
کاراکترهای ویژه در Regex معنای خاصی دارند و برای ایجاد الگوهای پیچیده‌تر استفاده می‌شوند. برخی از مهم‌ترین کاراکترهای ویژه عبارت‌اند از:

- `.` (نقطه): به معنای تطبیق با هر کاراکتر (به جز خط جدید).
مثال: الگوی a.c با رشته‌های "abc"، "a1c" و "a_c" تطبیق دارد.

- `^` : تطابق با ابتدای رشته.
مثال: الگوی ^hello فقط با رشته‌هایی که با "hello" شروع می‌شوند، تطبیق دارد.

- `$` : تطابق با انتهای رشته.
مثال: الگوی world$ فقط با رشته‌هایی که با "world" تمام می‌شوند، تطبیق دارد.

- `\d`: تطابق با هر عدد (0-9).
مثال: الگوی \d با هر عددی تطبیق دارد.

- `\w`: تطابق با هر کاراکتر الفبایی عددی (حروف، اعداد و زیرخط _).
مثال: الگوی \w با حروف و اعداد تطبیق دارد.

- `\s`: تطابق با هر کاراکتر فاصله (space، tab، newline).
مثال: الگوی \s با فاصله‌ها تطبیق دارد.

3. نحوه استفاده از کاراکترهای ویژه در C++:
برای استفاده از کاراکترهای ویژه مثل \d و \w در C++، باید از دو \\ استفاده کنید، زیرا در C++ کاراکتر \ خودش یک کاراکتر ویژه است. بنابراین به جای \d از \\d استفاده کنید.

مثال: تطبیق یک عدد در رشته
#include <iostream>
#include <regex>

int main() {
std::string text = "My number is 1234";
std::regex pattern("\\d+"); // تطابق با یک یا چند رقم

if (std::regex_search(text, pattern)) {
std::cout << "Number found!" << std::endl;
}
return 0;
}

در این مثال، الگوی \\d+ به دنبال یک یا چند عدد در رشته می‌گردد.

4. فرار دادن کاراکترهای ویژه (Escaping Special Characters):
اگر می‌خواهید یک کاراکتر ویژه را به عنوان یک کاراکتر عادی تطبیق دهید، باید آن را با یک \ فرار دهید. به عنوان مثال، اگر می‌خواهید . را به عنوان نقطه معمولی جستجو کنید، باید از \\. استفاده کنید.

مثال: تطبیق نقطه به عنوان کاراکتر عادی
#include <iostream>
#include <regex>

int main() {
std::string text = "Price is 50.5 dollars";
std::regex pattern("50\\.5"); // تطابق با "50.5"

if (std::regex_search(text, pattern)) {
std::cout << "Pattern found!" << std::endl;
}
return 0;
}


5. تمرین عملی روز 2:
1. یک برنامه بنویسید که با استفاده از std::regex_search بررسی کند که آیا یک عدد (هر عددی) در یک رشته وجود دارد یا خیر.
2. یک الگو بنویسید که بررسی کند آیا رشته ورودی شما با یک کلمه خاص شروع و با یک عدد خاص تمام می‌شود یا نه. برای این کار از ^ و $ استفاده کنید.
2025/07/01 03:27:52
Back to Top
HTML Embed Code: