2009-11-15 10 views
0

Je veux créer une expression régulière pour les chaînes qui utilise les caractères spéciaux [ et ].expression régulière java, comment ajouter '[' à l'expression

La valeur est "[action]". L'expression que j'utilise est "[\\[[\\x00-\\x7F]+\\]]".

J'ai essayé de le faire en ajoutant \\ avant [ et ].

Mais cela ne fonctionne pas.

Quelqu'un peut-il m'aider avec ceci.

Répondre

3

Vous souhaitez probablement retirer les supports "[]". En regexps ils font un choix de l'un des personnages clos

+1

Comme cela, il semblerait: "\\\ [[\\ x00 - \\ x7F] + \\\]". – Gunslinger47

0

Il suffit de coller une barre oblique inverse avant le crochet.

Deux barres obliques inverses s'échappent, donc le moteur regex voit \[, où [ est un caractère spécial.

+0

Ceci est une chaîne Java littérale, il a donc besoin backslashes double pour que le "moteur regex" pour voir une seule barre oblique inverse. –

+0

Ah bon, mon mauvais, je suppose que je suis habitué à taper des regexes dans une chaîne C# verbatim. –

1

Deux oblique double avant les supports ouvrir et fermer: \\[ et \\]

La double barre oblique inverse évalue une seule barre oblique inverse dans la chaîne. La barre oblique inverse unique échappe aux crochets afin qu'ils ne soient pas interprétés comme entourant une classe de caractères.

pour les antislashs Aucun crochets qui ne déclarent la classe de caractères: [a-z] (vous pouvez vous période de votre choix, non seulement a à z)

L'opérateur Kleene star correspond à un nombre de caractères dans la plage.

public class Regexp { 
    public static void main(final String... args) { 
     System.out.println("[action]".matches("\\[[a-z]*\\]")); 
    } 
} 

Sur mon système:

$ javac Regexp.java && java Regexp 
true