#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