Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式仅匹配url';这是万维网,不是万维网http://www_Java_Regex - Fatal编程技术网

Java正则表达式仅匹配url';这是万维网,不是万维网http://www

Java正则表达式仅匹配url';这是万维网,不是万维网http://www,java,regex,Java,Regex,基本上,如果一个文本类似于“lalala www.test.com lalahttp://test66.com“我需要一个regexp使之成为”拉拉http://www.test.com 拉拉http://test66.com" 谢谢 String plain = "test lalala www.test.com lalaal jaja http://www.test.com"; String str = "(?:(?:w{3}\.)(?:[a-zA-Z0-9/;\?&

基本上,如果一个文本类似于
“lalala www.test.com lalahttp://test66.com“
我需要一个regexp使之成为
”拉拉http://www.test.com 拉拉http://test66.com"

谢谢

    String plain = "test lalala www.test.com lalaal jaja http://www.test.com";
    String str = "(?:(?:w{3}\.)(?:[a-zA-Z0-9/;\?&=:\-_\$\+!\*'\(\|\\~\[\]#%\.])+[\.com|\.edu|\.gov|\.int|\.mil|\.net|\.org|\.biz|\.info|\.name|\.pro|\.aero|\.coop|\.museum|\.cat|\.jobs|\.travel|\.arpa|\.mobi|\.ac|\.ad|\.ae|\.af|\.ag|\.ai|\.al|\.am|\.an|\.ao|\.aq|\.ar|\.as|\.at|\.au|\.aw|\.az|\.ax|\.ba|\.bb|\.bd|\.be|\.bf|\.bg|\.bh|\.bi|\.bj|\.bm|\.bn|\.bo|\.br|\.bs|\.bt|\.bv|\.bw|\.by|\.bz|\.ca|\.cc|\.cd|\.cf|\.cg|\.ch|\.ci|\.ck|\.cl|\.cm|\.cn|\.co|\.cr|\.cs|\.cu|\.cv|\.cx|\.cy|\.cz|\.de|\.dj|\.dk|\.dm|\.do|\.dz|\.ec|\.ee|\.eg|\.eh|\.er|\.es|\.et|\.eu|\.fi|\.fj|\.fk|\.fm|\.fo|\.fr|\.ga|\.gb|\.gd|\.ge|\.gf|\.gg|\.gh|\.gi|\.gl|\.gm|\.gn|\.gp|\.gq|\.gr|\.gs|\.gt|\.gu|\.gw|\.gy|\.hk|\.hm|\.hn|\.hr|\.ht|\.hu|\.id|\.ie|\.il|\.im|\.in|\.io|\.iq|\.ir|\.is|\.it|\.je|\.jm|\.jo|\.jp|\.ke|\.kg|\.kh|\.ki|\.km|\.kn|\.kp|\.kr|\.kw|\.ky|\.kz|\.la|\.lb|\.lc|\.li|\.lk|\.lr|\.ls|\.lt|\.lu|\.lv|\.ly|\.ma|\.mc|\.md|\.mg|\.mh|\.mk|\.ml|\.mm|\.mn|\.mo|\.mp|\.mq|\.mr|\.ms|\.mt|\.mu|\.mv|\.mw|\.mx|\.my|\.mz|\.na|\.nc|\.ne|\.nf|\.ng|\.ni|\.nl|\.no|\.np|\.nr|\.nu|\.nz|\.om|\.pa|\.pe|\.pf|\.pg|\.ph|\.pk|\.pl|\.pm|\.pn|\.pr|\.ps|\.pt|\.pw|\.py|\.qa|\.re|\.ro|\.ru|\.rw|\.sa|\.sb|\.sc|\.sd|\.se|\.sg|\.sh|\..si|\.sj|\.sk|\.sl|\.sm|\.sn|\.so|\.sr|\.st|\.sv|\.sy|\.sz|\.tc|\.td|\.tf|\.tg|\.th|\.tj|\.tk|\.tl|\.tm|\.tn|\.to|\.tp|\.tr|\.tt|\.tv|\.tw|\.tz|\.ua|\.ug|\.uk|\.um|\.us|\.uy|\.uz|\.va|\.vc|\.ve|\.vg|\.vi|\.vn|\.vu|\.wf|\.ws|\.xxx|\.ye|\.yt|\.yu|\.za|\.zm|\.zw](?:[a-zA-Z0-9/;\?&=:\-_\$\+!\*'\(\|\\~\[\]#%\.])*)";
    Pattern patt = Pattern.compile(str);
    Matcher matcher = patt.matcher(plain);
    plain = matcher.replaceAll("http://$1");
这是我尝试过的,但我没能正确地逃脱绳子。此外,正则表达式本身比我需要的多一点。

试试这个

    String s = "lalala http://www.test.com lala http://test66.com";

    Pattern pat = Pattern.compile("\\b(((ht|f)tp(s?)\\:\\/\\/|~\\/|\\/)|www.)" + 
                    "(\\w+:\\w+@)?(([-\\w]+\\.)+(com|org|net|gov" + 
                    "|mil|biz|info|mobi|name|aero|jobs|museum" + 
                    "|travel|[a-z]{2}))(:[\\d]{1,5})?" + 
                    "(((\\/([-\\w~!$+|.,=]|%[a-f\\d]{2})+)+|\\/)+|\\?|#)?" + 
                    "((\\?([-\\w~!$+|.,*:]|%[a-f\\d{2}])+=?" + 
                    "([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)" + 
                    "(&(?:[-\\w~!$+|.,*:]|%[a-f\\d{2}])+=?" + 
                    "([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)*)*" + 
                    "(#([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)?\\b");

    Matcher mat = pat.matcher(s);

        while(mat.find()){

                mat.replaceAll("http:");
            }

            System.out.println(s);

如果在www之前没有“
”字符,您可以在组中使用管道,例如
”(|,| | | |>)www.“

向我们展示您的尝试,然后我们可以尝试帮助您。有很多人在这里多次问过同样的问题。
.replaceAll((URL\u REGEX\u不带\u HTTP\u前缀\u YOULL\u FIND\u ON\u WEB)”,“HTTP://$1”)好的编辑。如果发布了一个而不是代码段,并且提供了关于它如何失败的更多详细信息,可能会更好。只是因为字符串str不是java的有效字符串,我无法正确地转义它,所以代码无法编译。起初我没有发布这篇文章,因为我不确定正则表达式是否有效,即使我成功地逃脱了它。谢谢你的尝试,但我需要一个正则表达式,它可以将http://添加到所有只有www的链接中(从而将它们变成)。我遇到的问题不是将http://添加到已有的链接中(并制作类似的东西)。如果我不够清楚,很抱歉。忘记标记链接。。“感谢您的尝试,但我需要一个正则表达式,它可以将http://添加到所有只有www的链接中(从而将它们转换为)。我遇到的问题是没有将http://添加到已经有www的链接中(并生成类似的内容)。如果我不够清楚,很抱歉”
replaceAll(" www."," http://www"); would work,