1

下面是我的代码,我想在其中查找字符串是否包含$符号,但它显示错误:error: unknown escape sequence '\$'

#include <sys/types.h>
#include <regex.h>
#include <stdio.h>

#define MAX_MATCHES 1 //The maximum number of matches allowed in a single string

void match(regex_t *pexp, char *sz) {
        regmatch_t matches[MAX_MATCHES]; //A list of the matches in the string (a list of 1)
        //Compare the string to the expression
        //regexec() returns 0 on match, otherwise REG_NOMATCH
        if (regexec(pexp, sz, MAX_MATCHES, matches, 0) == 0) {
                printf(" matches characters ");
        } else {
                printf(" does not match\n");
        }
}

int main() {
        int rv;
        regex_t exp; //Our compiled expression
        //1. Compile our expression.
        //Our regex is "-?[0-9]+(\\.[0-9]+)?". I will explain this later.
        //REG_EXTENDED is so that we can use Extended regular expressions
        rv = regcomp(&exp, "\$", REG_EXTENDED);
        if (rv != 0) {
                printf("regcomp failed with %d\n", rv);
        }
        //2. Now run some tests on it
        match(&exp, "Price of iphone is $800 ");

        //3. Free it
        regfree(&exp);
        return 0;
}
4

4 回答 4

4

您需要转义反斜杠:

rv = regcomp(&exp, "\\$", REG_EXTENDED); 
于 2012-09-11T09:16:53.760 回答
3

转义字符串文字中的反斜杠:"\\$"

于 2012-09-11T09:16:48.883 回答
3

我已经有一段时间没有做过 C 正则表达式了,但是从记忆中你必须在它们中加倍转义反斜杠,因为第一个被视为 C 转义,然后第二个被传递给正则表达式引擎作为 $ 的转义. IE\\$

作为进一步的例子,如果你想检查 C 正则表达式中的反斜杠,你需要使用\\\\

于 2012-09-11T09:17:50.170 回答
1

当你想创建一个包含反斜杠的字符串时,就像这个正则表达式,你需要用另一个反斜杠转义反斜杠:

regcomp(&exp, "\\$", REG_EXTENDED); 
于 2012-09-11T09:17:14.670 回答