-1

基本上,如果文本类似于"lalala www.test.com lala http://test66.com"我需要一个正则表达式来制作它"lalala http://www.test.com lala 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");

这是我尝试过的,但我无法正确转义字符串。除此之外,正则表达式本身比我需要的多一点。

4

2 回答 2

0
replaceAll(" www."," http://www"); would work, 

如果www. 之前不是 ' ' 字符,则可以在这样的组中使用管道"( |,|;|>)www."

于 2012-08-23T11:46:37.467 回答
0

试试这个......

    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);
于 2012-08-23T10:04:28.760 回答