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

时间:2013-08-15 08:04:37

标签: c regex pcre

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

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

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

if ( strchr ( "\\^.$({[+-?*|", cInputP [ iLoop ] ) != NULL ) {
    bRet = TRUE;
    break; }

然而,这似乎不够优雅,容易出现语法错误。 PCRE中是否存在可以执行此操作的现有功能? pcre_study()函数似乎不这样做,我也不知道如何从pcre_compile()获取此信息。

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

1 个答案:

答案 0 :(得分:2)

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

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

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