Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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_Java_Regex - Fatal编程技术网

Java 从字符串中剥离URL

Java 从字符串中剥离URL,java,regex,Java,Regex,如果URL以*://或www.*开头,但在将正则表达式添加到预先存在的复杂模式时遇到问题,我想从字符串中删除所有形式的URL 目前,我使用 public static String censorUrls(String str) { String urlPattern = "((https?|ftp|gopher|telnet|file|Unsure|http):((//)|(\\\\))+[\\w\\d:#@%/;$()~_?\\+-=\\\\\\.&]*)";

如果URL以
*://
www.*
开头,但在将正则表达式添加到预先存在的复杂模式时遇到问题,我想从字符串中删除所有形式的URL

目前,我使用

public static String censorUrls(String str) {

        String urlPattern = "((https?|ftp|gopher|telnet|file|Unsure|http):((//)|(\\\\))+[\\w\\d:#@%/;$()~_?\\+-=\\\\\\.&]*)";
        Pattern pattern = Pattern.compile(urlPattern,Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(str);

        int i = 0;

        while ( matcher.find() ) {

            str = str.replaceAll(matcher.group(i), "****").trim();

            i++;

        }

    return str;

}

然而,这对可能只是
www.google.com
google.com
甚至
www3.site.com
的URL没有帮助。我记不起这是从哪里来的,但你可以试试

如果是中字符串匹配或不是中字符串匹配,则可以使用此字符串。
它使用空白边界<代码>(?和
(?!\S)
,将在锚点匹配
位置也一样

原始:
(?i)(


串接:
“(?i)(?你怎么知道
google.com
是一个URL?是
$12.50
一个URL吗?从技术上讲,
www.example.com
不是URL。URL需要协议。文件或文件夹可能会遵循这种模式而不受惩罚。另外,为什么在第一个
https
之后会有
?最后,所有那些反斜杠-你在看吗对于Windows模式?正确的URL使用前斜杠,即使在Windows上也是如此。我理解你的意思。但是,我宁愿检查拼写错误,也不愿将URL传递给孩子们。而且我使用的模式是有目的的。我甚至不确定它的确切含义(在模式结束时)这些反斜杠又一次来自不是我创建的原始代码。此外,当我删除一些反斜杠时,它会告诉我需要在Eclipse中转义。这是因为反斜杠是一个特殊字符,需要由另一个反斜杠转义。它们需要成对添加和删除。这对问题至关重要吗?目前,该函数在它只是没有删除所有类型的发布url类型,
www.somesite.com
somesite.com
被聊天系统解析为链接,并且必须剥离。它看起来确实很复杂。我试图在线测试它,Java正则表达式测试器给出了一系列错误,所以我尝试将其粘贴到Eclips中没有错误,所以我决定编译并运行。它没有给出任何错误,但似乎没有删除任何类型的URL。
http://google.com
或其他。嗯,它与
http://google.com
您是否尝试用空字符串替换?哦,嘿,没关系。它工作正常。问题是它太长了g我无意中在屏幕外加入了一个角色,但我没有意识到。非常感谢。看起来效果不错。如果你想在在线测试中使用它,我添加了一个原始版本。谢谢。我不得不说,这显然比我意识到的要难得多。
 (?i)
 (?<! \S )
 (?! mailto: )
 (?:
      [a-z]* :
      \/\/
 )?
 (?:
      \S+ 
      (?: : \S* )?
      @
 )?
 (?:
      (?:
           (?:
                [1-9] \d? 
             |  1 \d\d 
             |  2 [01] \d 
             |  22 [0-3] 
           )
           (?:
                \.
                (?: 1? \d{1,2} | 2 [0-4] \d | 25 [0-5] )
           ){2}
           (?:
                \.
                (?:
                     [1-9] \d? 
                  |  1 \d\d 
                  |  2 [0-4] \d 
                  |  25 [0-4] 
                )
           )
        |  (?:
                (?: [a-z\x{a1}-\x{ffff}0-9]+ -? )*
                [a-z\x{a1}-\x{ffff}0-9]+ 
           )
           (?:
                \.
                (?: [a-z\x{a1}-\x{ffff}0-9]+ -? )*
                [a-z\x{a1}-\x{ffff}0-9]+ 
           )*
           (?:
                \.
                (?: [a-z\x{a1}-\x{ffff}]{2,} )
           )
      )
   |  localhost
 )
 (?: : \d{2,5} )?
 (?: \/ [^\s]* )?
 (?! \S )