修改正则表达式以查找包含或不包含http前缀

时间:2018-05-22 03:57:25

标签: regex

我正在尝试检测另一个字符串中的URL。我得到了另一个SO的回答。但是,它不适用于我们需要的用例。

Detect and extract url from a string?

        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"以上的正则表达式工作?

输入字符串可以是许多单词和网址的组合

1 个答案:

答案 0 :(得分:0)

如果您只是按照指示在正常字符串中搜索,我没有理解为什么您使用非捕获组启动正则表达式。但..

它应该可以删除BitVector

但除非你添加[a-z - ] {5}

,否则你会错过你好

我主要使用https://regexr.com/

构建并测试我的正则表达式