Tp hunters cpp
635 subscribers
69 photos
41 videos
7 files
12 links
📌 چنل متمرکز روی زبان ++C به زبان فارسی

آموزش مفهومی همراه با چالش های جذاب و کاربردی

رفع اشکال در گروه
@Tphunterscpp_Group

ارتباط با ادمین‌ها
@h3li0p4us3_moharami
@systemchemist

زیر مجموعه تیم استارتاپی تی‌پی‌هانترز
@tphunters
Download Telegram
کدوم یکی از این گزینه ها، همه فاصله ها، تب ها یا خط جدید رو تطبیق میده؟
Anonymous Quiz
29%
\b
49%
\s
22%
$
کدوم یکی از رجکس های زیر کلمه Hello یا World رو تطبیق میده؟
Anonymous Quiz
37%
Hello|World
22%
Hello,World
41%
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 استفاده کنید تا در یک رشته بزرگ‌تر به دنبال کلمه خاصی بگردید.
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. یک الگو بنویسید که بررسی کند آیا رشته ورودی شما با یک کلمه خاص شروع و با یک عدد خاص تمام می‌شود یا نه. برای این کار از ^ و $ استفاده کنید.