我无法获得与之匹配的网址

 sregex rex = sregex::compile("(?:ftp|http|https)+://([\\S\^<\^>]+)", sregex::icase );


它匹配所有网址,但在每个匹配项的末尾也包含>>,我正尝试取反。我究竟做错了什么?

最佳答案

我相信你想要的是:

 sregex rex = sregex::compile("(?:ftp|http|https)://([\\S]+[^<>]*)", sregex::icase );


^是集合的第一个字符时,字符^仅表示“不是”。因此,^中的[\\S\^<\^>]+并不表示“不是”。如果^不是集合的第一个字符,则表示beginning of a target sequence or follows a line terminator,或没有特殊含义。

10-08 12:01