我有一個奇怪的問題。我正在尋找一個輕量級的正則表達式庫來使用Visual Studio。有人推薦我https://github.com/cesanta/slre;這個庫是我需要的,而且它重量很輕。slre正則表達式庫無法正常工作的開始(?我)不區分大小寫搜索
問題是,它不能在Visual Studio 2013下工作。我用下面的例子編譯它,但printf statament從來沒有達到過。
static const char *str =
"<img src=\"HTTPS://FOO.COM/x?b#c=tab1\"/> "
" <a href=\"http://cesanta.com\">some link</a>";
static const char *regex = "(?i)((https?://)[^\\s/'\"<>]+/?[^\\s'\"<>]*)";
struct slre_cap caps[2];
int i, j = 0, str_len = strlen(str);
while (j < str_len &&
(i = slre_match(regex, str + j, str_len - j, caps, 2, 0)) > 0) {
printf("Found URL: [%.*s]\n", caps[0].len, caps[0].ptr);
j += i;
}
有人可以看看,或者推薦我做錯了什麼。
如何測試它與微不足道的模式第一(「a」匹配「a」)?一個瘋狂的猜測是,你使用的一些正則表達式功能(如(?i)標誌)沒有在slre中實現(或者可能有另一種語法)。 – 2015-04-04 18:19:37
@AntonKovalenko:同意首先測試微不足道的模式。關於可用的功能,似乎支持'(?i)'(寫在文檔中)。 – 2015-04-04 18:36:45
@LucasTrzesniewski:以上代碼是來自slre doc的複製/粘貼示例。 – 2015-04-04 18:38:36