From 9f08cd44a6447ee61cd0bc8f2bfd6ba526541cbb Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Mon, 28 Aug 2023 12:58:00 +0200 Subject: [PATCH] Adjust regex to match URLs First I tried with g_uri_parse() and g_uri_to_string() but then I learned that GUri validation API is only for things that are part of a proper URL. Then used `g_utf8_strchr()` to cut the string at `>` since they are sometimes enclosed in `<>`. Thanks to @sjaeckel for providing a proper regex from https://stackoverflow.com/questions/43588699/regex-for-matching-any-url-character Fix https://github.com/profanity-im/profanity/issues/1877 --- src/ui/window_list.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ui/window_list.c b/src/ui/window_list.c index 4898f7a5..ab598f81 100644 --- a/src/ui/window_list.c +++ b/src/ui/window_list.c @@ -1310,7 +1310,8 @@ wins_add_urls_ac(const ProfWin* const win, const ProfMessage* const message, con GRegex* regex; GMatchInfo* match_info; - regex = g_regex_new("(https?|aesgcm)://\\S+", 0, 0, NULL); + // https://stackoverflow.com/questions/43588699/regex-for-matching-any-url-character + regex = g_regex_new("(https?|aesgcm)://[\\w\\-.~:/?#\\[\\]@!$&'()*+,;=%]+", 0, 0, NULL); g_regex_match(regex, message->plain, 0, &match_info); while (g_match_info_matches(match_info)) {