Java点与“任何字符”不匹配

时间:2014-08-18 14:24:56

标签: java regex string url replace

Dot应匹配任何角色。那么为什么这个正则表达式不起作用呢?

String url = "http://wikipedia.org";
System.out.println(url.replace("htt.://", ""));

输出:http://wikipedia.org

4 个答案:

答案 0 :(得分:10)

String.replace()编译文字正则表达式。您应该使用String.replaceAll()String.replaceFirst()

String url = "http://wikipedia.org";
System.out.println(url.replaceFirst("htt.://", ""));

以下是来自Java源代码的方法.replace()

/**
 * Replaces each substring of this string that matches the literal target
 * sequence with the specified literal replacement sequence. The
 * replacement proceeds from the beginning of the string to the end, for
 * example, replacing "aa" with "b" in the string "aaa" will result in
 * "ba" rather than "ab".
 *
 * @param  target The sequence of char values to be replaced
 * @param  replacement The replacement sequence of char values
 * @return  The resulting string
 * @throws NullPointerException if <code>target</code> or
 *         <code>replacement</code> is <code>null</code>.
 * @since 1.5
 */
public String replace(CharSequence target, CharSequence replacement) {
    return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
            this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
}

答案 1 :(得分:7)

您正在使用replace()方法。它需要String而不是正则表达式 你可以使用replaceAll();这样的正则表达式:replaceAll("htt.://", "");

答案 2 :(得分:5)

您需要使用replaceAll(),它将第一个参数解释为正则表达式。

String url = "http://wikipedia.org";
System.out.println(url.replaceAll("htt.://", ""));

输出

  

wikipedia.org

但有一句话:我假设您正在努力让httphttps与您的正则表达式一起使用。你现在拥有它的方式不会起作用,因为在&#34; https&#34;的情况下,它只需要1个字符,而不是2个字符。为了弥补这一点,请使用

url.replaceAll("htt.*://", "")

答案 3 :(得分:2)

您需要使用replaceAll()replaceFirst()函数代替replace()才能使用正则表达式:

String url = "http://wikipedia.org";
System.out.println(url.replaceAll("htt.://", ""));