Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
用于在非ASCII流中匹配模式的Regcomp替代方案_C_Regex_Linux_Unicode_Gnu - Fatal编程技术网

用于在非ASCII流中匹配模式的Regcomp替代方案

用于在非ASCII流中匹配模式的Regcomp替代方案,c,regex,linux,unicode,gnu,C,Regex,Linux,Unicode,Gnu,到目前为止,我一直在我的程序regcomp中使用正则表达式处理正则字符串 现在,我需要在非ASCII二进制流中找到特定的字节模式:据我所知,regcomp不能在这种上下文中工作 实际上,我希望能够定义(比如)一个3字节的模式,可能使用十六进制表示法: \x27\x87\xFE 谢谢如果您需要一个适用于UTF-8的正则表达式库,您应该使用 我的发现简而言之: regexp.h不解释输入字符串。这意味着: 您可以像这样轻松地将任意字节传递给regcomp 字符缓冲区[10]=“\x01abcd\

到目前为止,我一直在我的程序
regcomp
中使用正则表达式处理正则字符串

现在,我需要在非ASCII二进制流中找到特定的字节模式:据我所知,
regcomp
不能在这种上下文中工作

实际上,我希望能够定义(比如)一个3字节的模式,可能使用十六进制表示法:

\x27\x87\xFE

谢谢

如果您需要一个适用于UTF-8的正则表达式库,您应该使用

我的发现简而言之:

  • regexp.h不解释输入字符串。这意味着: 您可以像这样轻松地将任意字节传递给
    regcomp

    字符缓冲区[10]=“\x01abcd\x03”

    但是当要传递上面用ASCII编码的相同字符串时,regexp.h不会像C编译器那样解释它

  • PCRE在解析网络内容时更适合使用。谢谢


@ziu当时我不知道常规的regcomp(3)不允许使用8位代码。真的吗?我从未听说过这样的限制。这是一个POSIX函数(IEEE Std 1003.2),因此应可用于8位区域设置。到底是什么问题?表示法?我的问题是,我试图使regcomp使用不可打印的字节(即ASCII范围之外的任意字节值),但无法使其与我的模式匹配。@ziu我会检查源代码。regcomp根本不应该关心可打印性。