cs_ismailfk
Messages postés37Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention 8 juillet 2009
-
7 juil. 2008 à 23:03
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 2014
-
8 juil. 2008 à 11:36
Bonjour,
je voudrais bien de remplacer cette chaine caractère "<![CDATA[]]>
" par chaine vide ""
voici l'expression du pattern
Pattern p2= Pattern.compile("<![CDATA[]]>
" ); mais ça marche pas en effet il n'ya de remplacement de la chaine. je pense le problème
dû au caractère '!' Est ce que vous avez une solution.
merci.
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 8 juil. 2008 à 09:32
Bonjour
A mon avis c'est plutot les [] qui pose problème puisqu'il sont utilisé pour autorisé une liste de caractère.
Utilise
\p{\x21}pour le !
\p{\x5b}pour le [
\p{\x2d} pour le ]
Ps : dans ton cas, un simple replace (de la classe string) ne suffirait pas ?
Cdt
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 8 juil. 2008 à 11:36
les [] sont des caractères spéciaux dans les expressions régulières qui permettent de définir des classes de caractères :
[a-z] : tout caractère compris entre 'a' et 'z'
[a-zA-Z] : tout caractère compris entre 'a' et 'z' ou 'A' et 'Z'
Pour les utiliser comme caractère d'un motif, il faut utiliser le mécanisme d'échappement (éviter leur interprétation)
- \\[ pour le caractère '['
- \\] pour le caractère ']'
pareil pour les parenthèses, qui permettent de définir des groupes de capture
- \\( pour le caractère '('
- \\) pour le caractère ')'
L'utilisation des codes Unicode ou ASCII, peut marcher, mais risque de dépendre de la table de correspondance des caractères utilisée par la JVM.
Pour le point d'exclamation, je ne sais pas trop, mais tu peux aussi l'échapper, au cas où... (\\!), il est utilisé par les expressions de groupes sans captures :
<tt>(?!</tt>X<tt>)</tt>, X, via zero-width negative lookahead, ----
<tt>(?<!</tt>X<tt>)</tt>, X, via zero-width negative lookbehind
Sinon, il existe un parser tout fait qui gère la lecture des groupes CDATA, pour éviter des travailler par expressions régulières : SAX en implémentant l'interface LexicalHandler (startCDATA() et endCDATA().