7
votes

Quel est l'équivalent Java à cette preg_replace?

<?php
    $str = "word <a href=\"word\">word</word>word word";
    $str = preg_replace("/word(?!([^<]+)?>)/i","repl",$str);
    echo $str;
    # repl <word word="word">repl</word>
?>
source: http://pureform.wordpress.com/2008/01/04/matching-a-word-characters-outside-of-html-tags/Unfortunality my project needs a semantic libs avaliable only for Java...// Thanks Celso

2 commentaires

Vous avez sérieusement besoin de reformuler cette question. 1) Qu'est-ce que cela a à voir avec Java? 2) Quelle est votre entrée et votre sortie attendues?


Résultat attendu: reply replez reply reply


3 Réponses :


1
votes

Avant de fournir une nouvelle réponse, essayez-vous d'analyser un document HTML? Si tel est le cas, n'utilisez pas de regexes, utilisez un analyseur HTML.


1 commentaires

Mon outil "génère" XHTML remplaçant les termes dans une TXT dans une nouvelle balise à l'aide des termes en tant que valeur à l'intérieur de la balise, j'utilise l'approche de remplacement, car certains termes peuvent être composés comme "Celso Araujo Fontes". EXEMPLE, COMMENT AMÉRÉMENT DE RESTERMEL MYTERM dans cette situation MyTerm est Cool Friend



13
votes

Utilisez la méthode string.replaceAll (): xxx

espère que cela aide.


0 commentaires

3
votes

Pour traduire cette regex pour une utilisation en Java, tout ce que vous avez à faire est de vous débarrasser des délimiteurs / code> et de modifier le suivi i code> à un modificateur en ligne, (? I) code>. Mais ce n'est pas une très bonne regex; Je l'utiliserais à la place:

str = str.replaceAll("(?i)word(?![^<>]++>)", "repl");


1 commentaires

Merci Alan pour l'explication!