5 Stimmen

Wie erhalte ich das Substrat auf diese Weise in C?

/^[^\s]+\s([^\s]+)\s/

In PHP kann ich regex verwenden, um das substr zu erhalten, indem ich $1 ,

wie soll ich das in C machen?

Es ist aber besser, wenn man es ohne Regex machen kann.

UPDATE

Einfach ausgedrückt: Wie bekomme ich werwerur aus swerwer werwerur y (die zweite)?

2voto

WhirlWind Punkte 13556

Verwenden Sie strtok(), um die Leerzeichen zu finden.

Strtok Manpage :

#include <string.h>
...
char *token;
char *line = "LINE TO BE SEPARATED";
char *search = " ";

/* Token will point to "LINE". */
token = strtok(line, search);

/* Token will point to "TO". */
token = strtok(NULL, search);

2voto

Oleg Razgulyaev Punkte 5457

I

#include <string.h>
..
char str\[\] = "swerwer werwerur y";
char \*p1 = NULL,\*p2 = NULL;

p1 = strchr(str,' ');
p1++;
p2 = strchr(p1,' ');
if(p2) \*p2 = 0;

printf("found: %s\\n", p1);

i

    char str\[\] = "swerwer ., werwerur + y";
    const char \*dlms = " .,+";
    char \*p1 = NULL,\*p2 = NULL;

    p1 = strpbrk(str,dlms);
    while(strchr(dlms,\*p1)) p1++;
    p2 = strpbrk(p1,dlms);
    if(p2) \*p2 = 0;

    printf("found: %s\\n", p1);

(

0voto

Jerry Coffin Punkte 452852

Wenn ich richtig verstanden habe, was Sie wollen, sollte sscanf die Arbeit erledigen können:

char result[256];  
sscanf("swerwer werwerur y", "%*s %255s", result);

0voto

Simon Punkte 8997

Sie könnten nach Leerzeichen suchen in

char* strText = "word1 word2 word3";
int iTextLen = strlen(strText);
for(int i = 0; i < iTextLen; i++)
{
    if(strText[i] == ' ') //is it a space-character
    {
        //save position or whatever
    }
}

I

0voto

Giórgenes Punkte 66

I

$> man 3 regex

O regcomp() o regexec() .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X