修改正则表达式,以便在带有或不带有http前缀的字符串中查找URL
修改正则表达式,以便在带有或不带有http前缀的字符串中查找URL
这个问题已经有了答案:
我正在尝试在另一个字符串中检测URL。我从另一个SO得到了答案。然而,它不能满足我们需要的用例。
URL_REGEX = "(?:^|[\\W])((ht|f)tp(s?):\\/\\/|www\\.)" + "(([\\w\\-]+\\.){1,}?([\\w\\-.~]+\\/?)*" + "[\\p{Alnum}.,%_=?&#\\-+()\\[\\]\\*$~@!:/{};']*)"; Pattern p = Pattern.compile(URL_REGEX, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL); String str = "hello example.com"; // DOES NOT WORK //str = "$ANY_WORD example.com $ANY_WORD_1"; // DOES NOT WORK str = "hello http://example.com"; // WORKS
你能将上面的正则表达式修改为 str =\"hello example.com\"
也可以吗?
输入的字符串可以是许多单词和url的组合
admin 更改状态以发布 2023年5月23日
如果你只是在一个普通的字符串中查找,我不明白为什么要使用非捕获组开始你的正则表达式...
但是,如果你删除 (?:^|[\\W])((ht|f)tp(s?):\\/\\/|www\\.)
,它应该能工作。
不过,如果不加上 [a-z-]{5},你会错过 hello。
我大多数时候使用 https://regexr.com/ 来构建和测试我的正则表达式。