Java 去掉包含URL的句子

Java 去掉包含URL的句子,java,regex,string,Java,Regex,String,我正在寻找一种方法来删除包含Java中URL的句子。请注意,我想删除整个句子,而不仅仅是URL 我找到了一种方法来做这件事,它是有效的,但我正在寻找一种更简单的方法来做这件事,也许只有一个正则表达式 使用BreakIterator检测句子(可以以.?!)结尾: 使用正则表达式读取每一行并检测模式: . 如果找到,只需删除句子 在通过表达式之前,最好先打断/拆分句子 然后,这个表达式可能只返回那些没有URL的行(句子) ^(?!.*https?[^\s]+.*).*$ 在这里,我们将URL定义为

我正在寻找一种方法来删除包含Java中URL的句子。请注意,我想删除整个句子,而不仅仅是URL

我找到了一种方法来做这件事,它是有效的,但我正在寻找一种更简单的方法来做这件事,也许只有一个正则表达式

  • 使用BreakIterator检测句子(可以以.?!)结尾:
  • 使用正则表达式读取每一行并检测模式: . 如果找到,只需删除句子
  • 在通过表达式之前,最好先打断/拆分句子

    然后,这个表达式可能只返回那些没有URL的行(句子)

    ^(?!.*https?[^\s]+.*).*$
    
    在这里,我们将URL定义为
    https?[^\s]+

    试验
    import java.util.regex.Matcher;
    导入java.util.regex.Pattern;
    最后一个字符串regex=“^(?!https?[^\\s]+.*$”;
    final String=“对不起,我们今天不营业。请明天访问我们的网站:https://www.google.com. 谢谢您,祝您愉快!\n\n“
    +“对不起,我们今天不营业。请明天访问我们的网站。谢谢,祝您愉快!\n\n”
    +“对不起,我们今天休息。请明天访问我们的网站:https://www.goog. 谢谢您,祝您有愉快的一天!\n”;
    最终模式=Pattern.compile(regex,Pattern.MULTILINE);
    final Matcher Matcher=pattern.Matcher(字符串);
    while(matcher.find()){
    System.out.println(“完全匹配:+matcher.group(0));
    对于(int i=1;i
    在通过表达式之前,最好先打断/拆分句子

    然后,这个表达式可能只返回那些没有URL的行(句子)

    ^(?!.*https?[^\s]+.*).*$
    
    在这里,我们将URL定义为
    https?[^\s]+

    试验
    import java.util.regex.Matcher;
    导入java.util.regex.Pattern;
    最后一个字符串regex=“^(?!https?[^\\s]+.*$”;
    final String=“对不起,我们今天不营业。请明天访问我们的网站:https://www.google.com. 谢谢您,祝您愉快!\n\n“
    +“对不起,我们今天不营业。请明天访问我们的网站。谢谢,祝您愉快!\n\n”
    +“对不起,我们今天休息。请明天访问我们的网站:https://www.goog. 谢谢您,祝您有愉快的一天!\n”;
    最终模式=Pattern.compile(regex,Pattern.MULTILINE);
    final Matcher Matcher=pattern.Matcher(字符串);
    while(matcher.find()){
    System.out.println(“完全匹配:+matcher.group(0));
    
    对于(int i=1;i
    “(?
    ”)(?特定URL,或任何URL?任何URL。可以以http/https/www/ftp,etcA特定URL,或任何URL?任何URL开头。可以以http/https/www/ftp,etc开头。正则表达式对句子完全没有任何说明。它匹配包含URL的行。我曾想过将它们拆分并缝合,但这是我通常试图避免的这是一个很好的替代方案。谢谢!那个正则表达式对句子完全没有任何说明。它匹配包含URL的行。我也曾想过拆分它们并缝合它们,但这是我一直试图避免的事情。这是一个很好的替代方案。谢谢!这很好,很有效!只是好奇,这是什么?)这很好,很有效!只是好奇,这是什么?
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    final String regex = "^(?!.*https?[^\\s]+.*).*$";
    final String string = "Sorry, we are closed today. Visit our website tomorrow at https://www.google.com. Thank you and have a nice day!\n\n"
         + "Sorry, we are closed today. Visit our website tomorrow at. Thank you and have a nice day!\n\n"
         + "Sorry, we are closed today. Visit our website tomorrow at https://www.goog. Thank you and have a nice day!\n";
    
    final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
    final Matcher matcher = pattern.matcher(string);
    
    while (matcher.find()) {
        System.out.println("Full match: " + matcher.group(0));
        for (int i = 1; i <= matcher.groupCount(); i++) {
            System.out.println("Group " + i + ": " + matcher.group(i));
        }
    }
    
    "(?<=^|[?!.])[^?!.]+" + urlRegex + ".*?(?:$|[?!.])"