小编use*_*190的帖子

Posix正则表达式非贪心

有没有办法在C中使用非贪婪的正则表达式,就像可以在Perl中使用?我尝试了几件事,但实际上并没有用.

我目前正在使用这个匹配IP地址和相应的HTTP请求的正则表达式,但它很贪婪,虽然我使用*?:

([0-9]{1,3}(\\.[0-9]{1,3}){3})(.*?)HTTP/1.1

在此示例中,它始终匹配整个字符串:

#include <regex.h>
#include <stdio.h>

int main() {

    int a, i;
    regex_t re;
    regmatch_t pm;
    char *mpages = "TEST 127.0.0.1 GET /test.php HTTP/1.1\" 404 525 \"-\" \"Mozilla/5.0 (Windows NT  HTTP/1.1 TEST";

    a = regcomp(&re, "([0-9]{1,3}(\\.[0-9]{1,3}){3})(.*?)HTTP/1.1", REG_EXTENDED);

    if(a!=0)
        printf(" -> Error: Invalid Regex");

    a = regexec(&re, &mpages[0], 1, &pm, REG_EXTENDED);

    if(a==0) {

        for(i = pm.rm_so; i < pm.rm_eo; i++)
            printf("%c", mpages[i]);
        printf("\n");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

$ ./regtest

127.0.0.1 GET /test.php HTTP/1.1"404 525" - ""Mozilla/5.0(Windows NT HTTP/1.1

c regex posix non-greedy

8
推荐指数
1
解决办法
3738
查看次数

Ubuntu 14.04上的MySQL 5.5和SSL

我正在尝试在内核3.13.0-32-generic的Ubuntu 14.04 Linux(64位)上建立一个支持SSL的mysql服务器5.5.38-0ubuntu0.14.04.1.

我允许远程访问mysql并更改/etc/mysql/my.cnf以支持ssl ...

ssl=1
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
Run Code Online (Sandbox Code Playgroud)

我生成了证书......

openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem

openssl req -newkey rsa:2048 -days 3560 -nodes -keyout server-key.pem > server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem

openssl req -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem > client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem …
Run Code Online (Sandbox Code Playgroud)

mysql ssl ssl-certificate ubuntu-14.04

0
推荐指数
1
解决办法
2773
查看次数

标签 统计

c ×1

mysql ×1

non-greedy ×1

posix ×1

regex ×1

ssl ×1

ssl-certificate ×1

ubuntu-14.04 ×1