我想從c中的字符串中提取一個子字符串。我試圖複製this的答案,但我無法得到正確的正則表達式。正則表達式從字符串中提取特定的子字符串
從字符串
"-u [email protected] -p password -P passphrase -t tun_dev0 www.google.ie"
我想提取tun_dev0
。此外,該字符串中的參數可以以任意順序排列,並且在-t
之後可能有可變數量的空格。
#include <stdio.h>
int main() {
char *parameters = "-u [email protected] -p password -P passphrase -t tun_dev0 www.google.ie";
char tun[64];
sscanf(parameters, "-t %63[^ *]", tun);
fprintf(stderr, "\n%s\n\n",tun);
return 0;
}
注:字符串不提供這個節目
編輯
按perreal的答案參數,這裏是我的實現,它似乎工作,但它似乎跳過第一個參數。
/*Get the parameter value associated with the specified parameter i.e -t/-p */
char *get_parameter(char *parameters, char parameter)
{
char *p = strtok(parameters, "-");
while(p) {
p = strtok(NULL, "-");
if (NULL != p) {
if (p[0] == parameter) {
p = strtok(p, " ");
p = strtok(NULL, " ");
printf("%s\n", p);
return p;
break;
}
} else {
return NULL;
}
}
return NULL;
}
int main() {
char parameters[100] = "-u [email protected] -p password -P passphrase -t tun_dev0 www.google.ie";
char *parameter_value;
parameter_value = get_parameter(parameters,'u');
if (parameter_value != NULL) {
fprintf(stderr,"%s\n",parameter_value);
} else {
fprintf(stderr,"No matching param found!\n");
}
return 0;
}
有關於'的char *參數的細微問題=「-u我們......」。建議OP真正需要'char參數[] =「-u us ...」'。 – chux
是的,我認爲你是對的,謝謝 – TomSelleck