Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 测试用户输入字符串是否包含正则表达式_C_Regex_Pcre - Fatal编程技术网

C 测试用户输入字符串是否包含正则表达式

C 测试用户输入字符串是否包含正则表达式,c,regex,pcre,C,Regex,Pcre,在我的程序中,我允许管理员定义模板文档中的特定字符串格式。这可能包含正则表达式,也可能只是一个文本字符串 如果它是一个文本字符串,那么我想对文档中的所有实例自动复制该字符串,但是如果它是(PERL)正则表达式,我想提示用户输入正确的字符串。这一部分是由一个较低级别的用户(非管理员)执行的,他可能不理解正则表达式,所以我不想将其作为默认值提供给他们 目前,我正在通过字符串ala在循环中的一个简单调用来搜索正则表达式字符: if ( strchr ( "\\^.$({[+-?*|", cInputP

在我的程序中,我允许管理员定义模板文档中的特定字符串格式。这可能包含正则表达式,也可能只是一个文本字符串

如果它是一个文本字符串,那么我想对文档中的所有实例自动复制该字符串,但是如果它是(PERL)正则表达式,我想提示用户输入正确的字符串。这一部分是由一个较低级别的用户(非管理员)执行的,他可能不理解正则表达式,所以我不想将其作为默认值提供给他们

目前,我正在通过字符串ala在循环中的一个简单调用来搜索正则表达式字符:

if ( strchr ( "\\^.$({[+-?*|", cInputP [ iLoop ] ) != NULL ) {
    bRet = TRUE;
    break; }
然而,这似乎不雅观,而且容易出现语法错误。PCRE中是否存在可执行此操作的现有功能?pcre_study()函数似乎没有这样做,我也看不到如何从pcre_compile()获取这些信息


理想情况下,我还希望能够将字符串分解为文本子字符串和用户输入的子字符串的组成部分,以便替换字符串可以预先填充已知的必需字符,即使它确实包含正则表达式。PCRE库可以这样做吗,或者我需要用我自己的代码来扩展它吗?

您的要求有点令人困惑,因为它意味着某种错误的划分;事实上,所有字符串都是正则表达式,它们自身都是匹配的(当然,包含无效正则表达式的字符串可能除外)

因此,尝试检测字符串是“文字字符串还是正则表达式”有点奇怪


最好让用户明确地告诉程序一个文字字符串是否足够,或者是否需要使用正则表达式。

必须使用“假除法”,因为我需要知道是否可以按原样自动进行替换。例如,如果用户输入的字符串为“150kV”,则我可以自动替换它;但是,如果它是“[[:digit:][]+kV”,那么我就不能,并且需要额外的用户输入来替换字符串。怎么样?想想你在那里可能是对的,HamZA,调试输出似乎显示了我需要的一些信息。我想我需要涉过源头看看魔法是如何发生的。。。