Удалите первое n слов из строки

#c #regex

Вопрос:

Эта строка:

 anyWord = this is a placeholder to the end of line 
 

Я хочу удалить anyWord = и получить остальную часть строки.

Комментарии:

1. Name = не похоже ни на одно слово

2. Похоже, что это было бы легче решить с помощью встроенных строковых функций на любом языке, который вы используете. Например, разделитесь = и возьмите вторую часть.

3. Я использую язык Си

Ответ №1:

Если вы уверены, что хотите использовать только регулярное выражение для решения этой проблемы:

(?:^w = )(.*)$

а затем возьмите группу захвата (группа 1).

Комментарии:

1. Спасибо. это так близко. но я не имею в виду «Имя», я имею в виду «слово пробел знак равенства пробел». Я только что обновил вопрос

2. спасибо, что уделили мне время. но это все еще не работает со мной, я не знаю почему. проверьте это: regexr.com

3. bpa.st/IZEQ Я так близко, и вывод в порядке, мне не нравится, что я char x[1] пропускаю это…

Ответ №2:

Хотя мы не используем регулярное выражение, мы можем использовать strtok для получения правой части = символа в данной строке:

 #include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

const char* getRightSideOfEquals(const char* line){

    char* linecopy = strdup(line);
    const char* result = NULL;
    char* left = strtok(linecopy, "=");
    const char* right = strtok(NULL, "=");

    while (right amp;amp; isspace(*right)) {  // remove whitespace
        right  ;
    }

    result = strdup(right ? right : "");
    free((void*)linecopy);
    return resu<
}


int main()
{
    const char* line = "anyWord = this is a placeholder to the end of line";
    const char* right = getRightSideOfEquals(line);
    printf("%sn", right);
    free((void*)right);
    return 0;
}
 

Приведенная выше программа выведет: this is a placeholder to the end of line