DOT的正则表达式

时间:2010-10-05 09:45:10

标签: java regex

什么是正则表达式。和..?

if(key.matches(".")) {

do something 

}

匹配接受要求正则表达式的String。现在我需要删除MAP中的所有DOT。

5 个答案:

答案 0 :(得分:69)

。匹配任何字符,因此需要转义,即Java字符串中的\.\\.(因为\本身在Java字符串中具有特殊含义。)

然后,您可以使用\.\.\.{2}来匹配2个点。

答案 1 :(得分:9)

...

[.]{1}

[.]{2}

答案 2 :(得分:4)

[+ *?。]大多数特殊字符在方括号内没有任何意义。这个表达式匹配+,*,?或点。

答案 3 :(得分:3)

如果您只想替换字符串中的点,请使用String.Replace()。另一种方法是将Pattern-MatcherStringBuilder一起使用,这样可以提供更大的灵活性,因为您可以找到点之间的组。如果使用后者,我建议您使用"\\.+"忽略空条目。

public static int count(String str, String regex) {
    int i = 0;
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(str);
    while (m.find()) {
        m.group();
        i++;
    }
    return i;
}

public static void main(String[] args) {
    int i = 0, j = 0, k = 0;
    String str = "-.-..-...-.-.--..-k....k...k..k.k-.-";

    // this will just remove dots
    System.out.println(str.replaceAll("\\.", ""));
    // this will just remove sequences of ".." dots
    System.out.println(str.replaceAll("\\.{2}", ""));
    // this will just remove sequences of dots, and gets
    // multiple of dots as 1
    System.out.println(str.replaceAll("\\.+", ""));

    /* for this to be more obvious, consider following */
    System.out.println(count(str, "\\."));
    System.out.println(count(str, "\\.{2}"));
    System.out.println(count(str, "\\.+"));
}

输出将是:

--------kkkkk--
-.--.-.-.---kk.kk.k-.-
--------kkkkk--
21
7
11

答案 4 :(得分:1)

您应该使用包含不匹配

if(nom.contains("."))
    System.out.println("OK");
else
    System.out.println("Bad");