Regex optimisation d'échappement des arobases en java
J'ai besoin de remplacer tous les & dans une Chaîne de caractères qui n'est pas partie d'une entité HTML. De sorte que la Chaîne "Cette & les entités >
& <
" sera de retour "Ce &
entités > & <
"
Et je suis venu avec cette regex-motif: "&[a-zA-Z0-9]{2,7};" qui fonctionne très bien.
Mais je ne suis pas très habile dans la regex, et quand je teste la vitesse de plus de 100 itérations, il utilise montant double de temps par rapport à une précédente méthode utilisée, qui na pas utiliser les regex. (Mais ne sont pas de travail de 100%).
Testcode:
long time = System.currentTimeMillis();
String reg = "&(?!&#?[a-zA-Z0-9]{2,7};)";
String s="a regex test 1 & 2 1&2 and &_gt; - &_lt;"
for (int i = 0; i < 100000; i++) {test=s.replaceAll(reg, "&");}
System.out.println("Finished in:" + (System.currentTimeMillis() - time) + " milliseconds");
Donc la question serait de savoir s'il y a bien des façons d'optimiser cette expression expression pour qu'elle soit plus efficace?
Presque quatre d'entre nous ont essayé de modifier votre texte à entourer l'esperluette avec le code de format de citations. Il suffit de sélectionner le texte que vous voulez et utilisez le code, ce qu'il faudra retenir de l'esperluette.
OriginalL'auteur Duveit | 2009-05-11
Vous devez vous connecter pour publier un commentaire.
s.replaceAll(reg, "&")
est la compilation de l'expression régulière à chaque fois. La compilation du modèle une fois fournira une certaine augmentation de la performance (~30% dans ce cas).OriginalL'auteur Chris Thornhill
Vous devez exclure la
&
à partir de votre "look-ahead" assertion. Essayez donc cette expression régulière:Ou pour être plus précis:
OriginalL'auteur Gumbo
Une autre manière de faire sans exploser votre tête avec des regexp serait d'utiliser StringEscapeUtils de Commons Lang.
OriginalL'auteur Valentin Rocher
Je ne suis pas très familier avec le Java regex classes, mais en général, vous souhaitez peut-être enquêter sur une largeur nulle d'anticipation ; après l'esperluette.
Voici un lien décrivant positifs et négatifs lookaheads
OriginalL'auteur John Weldon