48 votes

expression régulière pour DOT

Quelle est l'expression régulière pour . et .. ?

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

do something 

}

Les correspondances accepte String qui demande une expression régulière. Maintenant, je dois supprimer tous les DOT dans ma MAP.

87voto

mikej Points 30224

. correspond à n'importe quel caractère et doit donc être échappé, c'est-à-dire \. , ou \\. dans une chaîne Java (car \ lui-même a une signification particulière dans les chaînes Java.)

Vous pouvez ensuite utiliser \.\. ou \.{2} pour faire correspondre exactement 2 points.

13voto

Noon Silk Points 30396

...

 [.]{1}

ou

 [.]{2}

?

7voto

Sachin Shanbhag Points 20979

[+*?.] La plupart des caractères spéciaux n'ont aucune signification entre crochets. Cette expression correspond à l'un des +, *, ? ou le point.

3voto

Margus Points 6175

Utilisez String.Replace() si vous souhaitez simplement remplacer les points de la chaîne. L'alternative serait d'utiliser Pattern-Matcher avec StringBuilder , cela vous donne plus de flexibilité car vous pouvez trouver des groupes entre les points. Si vous utilisez ce dernier, je vous recommanderais d'ignorer les entrées vides avec "\\.+" .

 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, "\\.+"));
}

La sortie sera :

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

1voto

fylex Points 163

Vous devez utiliser contient pas de correspondances

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X