gpt4 book ai didi

c# - C 中的正则表达式

转载 作者:行者123 更新时间:2023-11-30 18:05:21 25 4
gpt4 key购买 nike

我正在尝试在 C 中进行一些正则表达式匹配,现在正在处理 IP 地址匹配。

在 C# 中,我会采用这样的模式:

//Doesn't matter if not a correct IP, or just 4 groups of 3 digits separated string
string pattern = @"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}";

在 C 中,稍微修改一下模式,它似乎没有给出任何结果,所以我想还有另一种表示正则表达式的方法,可以与 regcompregexec< 一起使用.

C 中匹配 IP 地址的正确正则表达式是什么?一个好的教程的引用也很好。

编辑:这是我的代码的摘录

..
#include <regex.h>
..

int main(int argc, char *argv[]){
regex_t regex;
int reti;

char* pattern = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";
reti = regcomp(&regex, pattern, 0);
if( reti ){ fprintf(stderr, "Could not compile regex\n"); exit(1); }

reti = regexec(&regex, "21.21.12.12", 0, NULL, 0);
if( !reti ){
puts("Match");
}
else
puts("No match");

return 0;
}

编辑2:解决方案是使用 POSIX 括号表达式 as explained here

最佳答案

据我所知,您必须使用 [0-9] 或 [:digit:] 而不是\d,并且应该支持 { } 语法,以便其余部分可以是 ketp。如果不是,请考虑使用 PCRE而不是“默认”正则表达式(在这种情况下,您不需要更改 C# 中的操作)

关于c# - C 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6570072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com