Posix正前pression非贪婪

编程入门 行业动态 更新时间:2024-10-17 09:43:59
本文介绍了Posix正前pression非贪婪的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

有没有使用非正规贪婪前pression用C一样可以在Perl中使用的方法吗?我试了几件事情,但它实际上没有工作。

Is there a way to use a non-greedy regular expression in C like one can use in Perl? I tried several things, but it's actually not working.

我目前使用此正则表达式匹配的IP地址和相应的HTTP请求,但尽管我使用的是贪婪的*?:

I'm currently using this regex that matches an IP address and the corresponding HTTP request, but it's greedy although I'm using the *?:

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

在这个例子中,它总是整个字符串匹配

In this example, it always matches the whole string:

#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; }

$ ./regtest

$ ./regtest

127.0.0.1 GET /test.php HTTP / 1.1404 525 - Mozilla的/ 5.0(Windows NT的HTTP / 1.1

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

推荐答案

没有,也有POSIX正前pressions没有非贪婪量词。但它提供的perl-像普通的前pressions对于C库: www.pcre /

No, there are no non-greedy quantifiers in POSIX regular expressions. But there is a library that provides perl-like regular expressions for C: www.pcre/

更多推荐

Posix正前pression非贪婪

本文发布于:2023-06-05 23:05:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/531126.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:贪婪   Posix   pression

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!