Regex в языке программирования C: справочник и примеры

Regex (регулярные выражения) в языке программирования C используются для поиска, сопоставления и замены текста в строках. С помощью regex можно точно определить, соответствует ли заданная строка заданному шаблону.

В C стандартная библиотека для работы с регулярными выражениями называется POSIX regex, которая доступна в заголовочном файле .

Пример использования POSIX regex:

c
#include 
#include 
int main() {
    regex_t regex;
    int reti;
    char msgbuf[100];
    // компиляция регулярного выражения
    reti = regcomp(®ex, "^a[[:alnum:]]+", 0);
    if (reti) {
        fprintf(stderr, "Could not compile regex\n");
        return 1;
    }
    // поиск соответствия в строке
    reti = regexec(®ex, "apple", 0, NULL, 0);
    if (!reti) {
        printf("Match\n");
    } else if (reti == REG_NOMATCH) {
        printf("No match\n");
    } else {
        regerror(reti, ®ex, msgbuf, sizeof(msgbuf));
        fprintf(stderr, "Regex match failed: %s\n", msgbuf);
        return 1;
    }
    // освобождение ресурсов
    regfree(®ex);
    return 0;
}

В этом примере мы компилируем регулярное выражение "^a[[:alnum:]]+" (начинается с буквы "a", за которой следуют один или более алфавитно-цифровых символов), используя функцию regcomp(). Затем мы выполняем поиск соответствия в строке "apple" с помощью функции regexec(). Если соответствие найдено, функция выводит "Match"; в противном случае выводится "No match". Функция regerror() используется для вывода сообщения об ошибке, если поиск не удался.

Регулярные выражения в C также могут использоваться для замены (replacing) текста в строках. Например:

c
#include 
#include 
int main() {
    regex_t regex;
    int reti;
    char str[] = "The quick brown fox jumps over the lazy dog";
    char newstr[100];
    const char *pattern = "fox";
    const char *replace = "cat";
    // компиляция регулярного выражения
    reti = regcomp(®ex, pattern, 0);
    if (reti) {
        fprintf(stderr, "Could not compile regex\n");
        return 1;
    }
    // выполнение замены в строке
    reti = regreplace(®ex, str, strlen(str), newstr, sizeof(newstr), NULL);
    if (reti) {
        fprintf(stderr, "Could not replace regex\n");
        return 1;
    }
    printf("Original string: %s\n", str);
    printf("New string: %s\n", newstr);
    // освобождение ресурсов
    regfree(®ex);
    return 0;
}

В этом примере мы компилируем регулярное выражение "fox" и затем заменяем его на "cat" в строке "The quick brown fox jumps over the lazy dog" с помощью функции regreplace(). Результат замены сохраняется в новой строке newstr. Вывод программы будет:


Original string: The quick brown fox jumps over the lazy dog
New string: The quick brown cat jumps over the lazy dog

Как видно из этих примеров, regex в C предоставляет мощный инструмент для работы с текстом в строках, который может использоваться для поиска и замены соответствий в тексте с использованием множества различных шаблонов.

Похожие вопросы на: "regex c "

Как использовать комментарии в HTML-коде
0 x - игровая стратегия с бесконечными возможностями
xforwarded extension: идентификация IP-адресов пользователей
Java Arrays: The Fundamentals and Advanced Techniques
Перенос строки в HTML: как сделать перенос текста на новую строку?
Transform Rotate: Использование и Принцип Действия
Как загрузить проект на GitHub: пошаговая инструкция
XML Formatter
Data jQuery: улучшение обработки данных на вашем веб-сайте
<h1>Учебный курс по программированию на языке C с использованием стандарта ANSI