c regex tutorial regular expressions c with examples
Підручник з регулярних виразів на C ++ або регулярних виразів пояснює роботу регулярних виразів на C ++, включаючи функціональність відповідності регулярних виразів, пошуку, заміни, перевірки введення та маркування:
Регулярні вирази або регулярні вирази або регулярні вирази, як їх зазвичай називають, використовуються для представлення певного зразка рядка або тексту. Реґекси часто використовуються для позначення стандартного текстового синтаксису рядка.
=> Завітайте сюди, щоб побачити навчальну серію C ++ для всіх.
Кожен символ у регулярному виразі має або символ із буквальним значенням, або 'метасимвол', що має особливе значення.
Наприклад , регулярний вираз 'a (a-z)' може мати значення 'aa', 'ab', 'ax' і т. д. Тут a має буквальне значення, а (a-z) позначає будь-який малий символ від a до z.
Звичайно, наведений приклад є найпростішим. Ми можемо мати регулярний вираз із більш складними візерунками.
Майже всі мови програмування підтримують регулярні вирази. C ++ має пряму підтримку регулярних виразів від C ++ 11 і далі. Окрім мов програмування, більшість програм обробки тексту, такі як лексери, вдосконалені текстові редактори тощо, використовують регулярні вирази.
У цьому підручнику ми дослідимо деталі регулярних виразів загалом, а також щодо програмування на C ++.
Що ви дізнаєтесь:
- Регулярний вираз (регулярний вираз) у C ++
- Шаблони функцій, що використовуються в регулярному виразі C ++
- Перевірка вводу C ++
- Висновок
Регулярний вираз (регулярний вираз) у C ++
Регулярний вираз або регулярний вираз - це вираз, що містить послідовність символів, що визначають певний шаблон пошуку, який можна використовувати в алгоритмах пошуку рядків, знайти або знайти / замінити алгоритми і т. Д. Регекси також використовуються для перевірки вхідних даних.
Більшість мов програмування надають або вбудовану можливість регулярного виразу, або через бібліотеки. Починаючи з С ++ 11, C ++ забезпечує підтримку регулярних виразів за допомогою стандартної бібліотеки через заголовок.
Процесор регулярних виразів, який використовується для синтаксичного аналізу регулярного виразу, перетворює його у внутрішнє представлення, яке виконується та відповідає рядку, що представляє текст, який шукається. C ++ 11 використовує граматику ECMAScript як граматику за замовчуванням для регулярного виразу. ECMAScript простий, але при цьому надає потужні можливості регулярного виразу.
Давайте побачимо деякі з шаблонів, які ми вказуємо в регулярному виразі, як Специфікація діапазону, Повторювані шаблони тощо.
Технічні характеристики асортименту
Вказівка діапазону символів або літералів є одним з найпростіших критеріїв, що використовуються у регулярному виразі.
Наприклад, ми можемо вказати діапазон малих літер від a до z наступним чином:
(a-z)
Це буде відповідати рівно одному малому символу.
Наступні критерії,
(A-Za-z0-9)
Наведений вище вираз задає діапазон, що містить один окремий символ великого регістру, один нижній регістр та цифру від 0 до 9.
Дужки (()) у наведених вище виразах мають особливе значення, тобто вони використовуються для вказівки діапазону. Якщо ви хочете включити дужку як частину виразу, вам потрібно буде її уникнути.
Отже, наступний вираз:
( (0-9)
Наведений вище вираз вказує на відкриваючу дужку та цифру в діапазоні від 0 до 9 як регулярний вираз.
Але зауважте, що, коли ми програмуємо на C ++, нам потрібно використовувати специфічну для C ++ послідовність екрану наступним чином:
(\ (0-9)
Повторний візерунок
Наведені вище приклади діапазонів відповідають лише одному символу або літералу. Якщо ми хочемо зіставити більше одного символу, ми зазвичай вказуємо «модифікатор виразу» разом із шаблоном, роблячи його повторним шаблоном.
Модифікатором виразу може бути '+', що пропонує один або кілька разів відповідати появі шаблону, або може бути '*', що пропонує відповідати появі шаблону нуль або більше разів.
Наприклад,наступний вираз,
(a-z) + відповідає рядкам, таким як a, aaa, abcd, softwaretestinghelp тощо. Зверніть увагу, що він ніколи не збігатиметься з порожнім рядком.
Вираз,
(a-z) * буде відповідати порожньому рядку або будь-якому з вищевказаних рядків.
Якщо ви хочете вказати групу символів, яка повинна збігатися один або кілька разів, тоді ви можете скористатися дужками таким чином:
(Xyz) +
Наведений вище вираз буде відповідати Xyz, XyzXyz, XyzXyzXyz тощо.
Приклад регулярного виразу C ++
Розглянемо регулярний вираз, який відповідає імені файлу MS-DOS, як показано нижче.
char regex_filename() = “(a-zA-Z_) (a-zA-Z_0-9)*\.(a-zA-Z0-9)+”;
Вищезазначений регулярний вираз можна інтерпретувати так:
Установіть відповідність між літерою (малою, а потім великою) або підкресленням. Потім збігаються з нулем або більше символів, у яких кожен може бути літерою, підкресленням або цифрою. Потім зрівняйте буквальну крапку (.). Після крапки знайдіть один або кілька символів, у кожному з яких може бути буква або цифра, що вказують на розширення файлу.
Шаблони функцій, що використовуються в регулярному виразі C ++
Давайте тепер обговоримо деякі важливі шаблони функцій під час програмування регулярного виразу на C ++.
regex_match ()
Цей шаблон функції використовується для відповідності заданому шаблону. Ця функція повертає true, якщо заданий вираз відповідає рядку. В іншому випадку функція повертає false.
Далі наведено приклад програмування на C ++, який демонструє функцію regex_match.
#include #include #include using namespace std; int main () { if (regex_match ('softwareTesting', regex('(soft)(.*)') )) cout Вихід:

У наведеній вище програмі спочатку ми поєднуємо рядок “softwareTesting” із регулярним виразом “(“ (soft) (. *) ”За допомогою функції regex_match. Згодом ми також демонструємо різні варіації regex_match, передаючи йому рядовий об’єкт, асортимент тощо.
regex_search ()
Функція regex_search () використовується для пошуку шаблону в рядку, який відповідає регулярному виразу.
Розглянемо наступну програму на C ++, яка показує використання regex_search ().
#include #include #include using namespace std; int main() { //string to be searched string mystr = 'She sells_sea shells in the sea shore'; // regex expression for pattern to be searched regex regexp('s(a-z_)+'); // flag type for determining the matching behavior (in this case on string objects) smatch m; // regex_search that searches pattern regexp in the string mystr regex_search(mystr, m, regexp); cout<<'String that matches the pattern:'< Вихід:

Ми вказуємо рядок, а потім регулярний вираз, використовуючи об’єкт регулярного виразу. Цей рядок і регулярний вираз передаються функції regex_search разом із типом прапора зразка. Функція шукає перше входження шаблону у вхідний рядок і повертає відповідний рядок.
regex_replace ()
Функція regex_replace () використовується для заміни шаблону, що відповідає регулярному виразу, рядком.
Давайте скористаємось програмою C ++ для демонстрації функції regex_replace ().
#include #include #include #include using namespace std; int main() { string mystr = 'This is software testing Help portal
'; cout<<'Input string: '< Вихід:

Тут ми маємо вхідний рядок. Ми пропонуємо регулярний вираз, який відповідає рядку, що починається на „p“. Потім відповідне слово замінюємо словом „веб-сайт”. Далі ми замінюємо слово «веб-сайт» назад на портал.
Перевірка вводу C ++
Ми обговорили основні шаблони функцій, які використовуються для узгодження шаблонів за допомогою регулярного виразу. Примітно, що основною метою, яку виконує регулярний вираз, є перевірка вхідних даних. Ви можете перевірити введення, введені зі стандартного пристрою введення, використовуючи вираз регулярного виразу.
Перевірте наведену нижче програму, щоб продемонструвати, як ви можете використовувати регулярний вираз для перевірки вхідних даних.
#include #include #include using namespace std; int main() { string input; regex integer_expr('(\+|-)?((:digit:))+'); //As long as the input is correct ask for another number while(true) { cout<>input; if(!cin) break; //Exit when the user inputs q if(input=='q') break; if(regex_match(input,integer_expr)) cout<<'Input is an integer'< Вихід:

Ця програма відповідає введеному користувачем введенню для перевірки, якщо це ціле число. Наведений вище результат показує, що коли вводиться ціле число, воно дає відповідне повідомлення, а коли вводяться будь-які інші дані, воно видає повідомлення як недійсний вхід.
яка програма відкриє файл
Висновок
Regex використовується в пошукових системах для пошуку шаблонів, пошуку та заміни діалогових вікон таких програм, як текстові процесори та текстові редактори. Regex також використовується в утилітах UNIX, таких як sed, awk, а також для лексичного аналізу програми.
Ми бачили функції, які використовуються для узгодження, пошуку та заміни шаблонів у цьому посібнику. Використовуючи ці функції, ми в основному можемо розробити ефективний додаток, який реалізує бажану функціональність за допомогою регулярного виразу.
Regex дозволяє ефективно перевіряти вхідні дані або шукати та замінювати рядок шаблоном виправлення, і це можна зробити, використовуючи дуже кілька рядків коду на C ++.
Також читайте => Підручник із регулярних виразів Java
=> Перевірте ВСІ підручники з C ++ тут.
Рекомендована література
- Регулярний вираз $ MongeDB регулярного виразу з прикладом
- Підручник з Python DateTime із прикладами
- Як використовувати регулярні вирази Unix
- Підручник з довжини масиву Java із прикладами коду
- Підручник зі створення сценаріїв Unix Shell із прикладами
- MongoDB Підручник з шардування з прикладом
- Знайти елемент селену за допомогою підручника з тексту з прикладами
- Підручник з труб Unix: Труби в програмуванні Unix