FTP url C 中的正则表达式 POSIX

FTP url regular expression in C POSIX

我正在尝试在 POSIX regex.I 的帮助下使用 ERE(扩展正则表达式)制作一个简单的 FTP url 解析器。我想出了 2 个正则表达式(一个用于用户输入用户名和密码,另一个用于匿名):

/* ftp syntax */
ftp://[<user>:<password>@]<host>/<url-path>


/* The regular expression pattern (might be changed) */
const char* pattern = "ftp://(([a-z0-9]+):([a-z0-9]+)@)*([\.a-z0-9]+)/([\./a-z0-9]+)$";

/* The anonymous one */
const char* patternAnon = "ftp://([\.a-z0-9]+)/([\./a-z0-9]+)$";

我的主要困难是试图将它们两个组合成一个正则表达式。谢谢。

此正则表达式将匹配您指定的两种模式:

ftp://([a-z0-9]+:[a-z0-9]+@)?([\.a-z0-9]+)/([\./a-z0-9]+)$

不过,我还应该提到您的模式(以及这个模式)也匹配许多无效的 url 格式,并且遗漏了一些有效的格式。我会把它留给你,但至少你可以在我的示例中看到使 user:pass@ 部分可选的方法。