Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 正则表达式模式不';如果结尾没有空格,则不起作用_Java_Regex - Fatal编程技术网

Java 正则表达式模式不';如果结尾没有空格,则不起作用

Java 正则表达式模式不';如果结尾没有空格,则不起作用,java,regex,Java,Regex,我想删除包含http或https的字符串。我有以下代码段: String line="abc http://someurl something https://someurl"; if (line.contains("https") || line.contains("http")) { System.out.println(line); String x = line.replaceAll("https?://.*?\\s+", " ");

我想删除包含http或https的字符串。我有以下代码段:

    String line="abc http://someurl something https://someurl";

    if (line.contains("https") || line.contains("http")) {
        System.out.println(line);
        String x = line.replaceAll("https?://.*?\\s+", " ");
        System.out.println(x);
    }
输出为:
abc某物https://someurl
(不删除结束url)

期望的输出是:
abc something

我猜这是对正则表达式的简单更改

编辑:很抱歉,前面的示例在http之后没有包含实际的url。

您的正则表达式是

https?://.*?\\s+
最后一个标记
\s+
表示一个或多个空格字符。如果要删除不一定以空格结尾的子字符串,可以使用
*
而不是
+
-
*
重复前面的标记零次或多次:

也就是说,如果您拥有的URL有效且不包含任何空格字符,那么将非空格字符与
\S
匹配并替换为空字符串可能更有意义,而不是查找空格字符,将其匹配,然后替换为另一个空格:

你的正则表达式是

https?://.*?\\s+
最后一个标记
\s+
表示一个或多个空格字符。如果要删除不一定以空格结尾的子字符串,可以使用
*
而不是
+
-
*
重复前面的标记零次或多次:

也就是说,如果您拥有的URL有效且不包含任何空格字符,那么将非空格字符与
\S
匹配并替换为空字符串可能更有意义,而不是查找空格字符,将其匹配,然后替换为另一个空格:


很抱歉,我以前的输入在http之后没有实际的URL。我希望删除整个URL。@kami
https?://[^\\s]*\\s*
@TuyenPham使用
\s
[^\s]
@CertainPerformance好得多,是的,我在写我的文章时没有看到你最后的评论,
\s
不会在我的大脑中弹出:)对不起,我以前的输入在http之后没有实际的URL。我希望删除整个URL。@kami
https?://[^\\s]*\\s*
@TuyenPham使用
\s
[^\s]
@CertainPerformance好得多,是的,我在写我的时候没有看到你最后的评论,
\s
不会在我的脑海中弹出:)
String x = line.replaceAll("https?://\\S*", "");