web-dev-qa-db-fra.com

Comment représenter le caractère guillemets doubles (") dans l'expression régulière?

Je dois utiliser l'expression régulière, pour vérifier si une chaîne commence par un caractère guillemets doubles (") et se termine également par un caractère guillemets doubles.

Le problème est que je ne peux pas utiliser un caractère guillemets doubles, car cela devient confus. Existe-t-il un autre moyen de représenter un guillemets doubles caractère " en regex, ou en chaîne en général?

String s = """;    // ?
11
Gigalala

Premièrement, le caractère guillemet double n'a rien de spécial dans regex - c'est juste un autre caractère, il n'a donc pas besoin d'être échappé du point de vue de regex.

Cependant, parce que Java utilise des guillemets doubles pour délimiter les constantes de chaîne, si vous souhaitez créer une chaîne dans Java avec un guillemet double) vous devez y échapper.

Ce code testera si votre chaîne correspond:

if (str.matches("\".*\"")) {
    // this string starts and end with a double quote
}

Notez que vous n'avez pas besoin d'ajouter le début et la fin des marqueurs d'entrée (^ Et $) Dans l'expression régulière, car matches() nécessite que toute l'entrée soit mise en correspondance avec return true - ^ et $ sont implicites.

23
Bohemian

vous devez utiliser la barre oblique inverse avant ". comme \"

Du doc ​​ ici vous pouvez voir que

Un caractère précédé d'une barre oblique inverse (\) est une séquence d'échappement et a une signification particulière pour le compilateur.

et "(guillemet double) est une séquence d'escacpe

Lorsqu'une séquence d'échappement est rencontrée dans une instruction print, le compilateur l'interprète en conséquence. Par exemple, si vous souhaitez mettre des guillemets entre guillemets, vous devez utiliser la séquence d'échappement,\", sur les guillemets intérieurs. Pour imprimer la phrase

Elle a dit "Bonjour!" tome.

tu écrirais

System.out.println ("Elle m'a dit \" Bonjour!\".");

9
stinepike