2011-05-13 2 views
0

J'ai un problème pour établir de bonnes expressions régulières pour rechercher et remplacer. J'ai besoin de remplacer toutes les URLs dans de nombreux fichiers .jsf. Je veux remplacer ulrs regardant par XXX avec <c:url value="URL_WITHOUT_XXX"/>. Exemples ci-dessous.expressions régulières: rechercher et remplacer url avec c: tag url

je coincé avec trouver l'expression régulière "XXX(.*)" et remplacer l'expression "<c:url value="\1"/>", mais mon match de trouver d'expression à longue chaîne, par exemple "XXX/a" style="", mais il faut ce match que d'abord " (fin href). Quelqu'un aide-t-il?

J'ai:

<a href="XXX/a" style=""> 
<a href="XXX/b" > 
<a href="XXX/c" ...> 

Je veux:

<a href="<c:url value="/a"/>" style=""> 
<a href="<c:url value="/b"/>" > 
<a href="<c:url value="/c"/>" ...> 

PS: Désolé pour mon pauvre anglais)

Edit: J'utilise Rechercher/Remplacer dans Eclipse (expressions régulières) sur

Répondre

3

Vous devez spécifier la langue avec laquelle vous travaillez.

Le regex suivant correspondra à ce que vous voulez:

<a href="XXX[^\"]*" 

Si vous voulez avoir une valeur particulière, vous pouvez regrouper les regex en fonction de vos besoins. Par exemple:

<a href="(XXX[^\"]*)" 

vous donnera dans le premier groupe:

XXX/a 
XXX/b 
XXX/b 

Si vous voulez avoir seulement /a, /b et /c, vous pouvez regrouper comme ça:

<a href="XXX([^\"]*)" 

Edit:
Je vais vous expliquer ce que <a href="XXX[^\"]*" fait:

  • Il correspondront: <a href="XXX
  • Ensuite, il doit correspondre quoi que ce soit que, sauf un " zéro ou plusieurs fois: [^\"]*
  • correspondre Enfin, le ", ce qui est vraiment nécessaire

Lorsque vous: [^abc] vous dire à quoi que ce soit, mais pas correspondre a, ou b ou c. Donc [^\"] est: Correspond à tout sauf un ".

Et le quantificateur * signifie zéro fois ou plus, si a* correspondra une chaîne vide, ou a, aa, aaa, ...

Et la dernière chose: Groupes

Lorsque vous voulez garder la valeur du match appart entier, de sorte que vous pouvez faire quelque chose avec elle, vous pouvez utiliser des groupes: (something).

+0

ça marche très bien mais je n'ai pas compris la logique? '[^]' signifie la négation, mais après cela, il sélectionnera 'XXX/a' comment? est-il pas moyen de sélectionner juste entre tag href comme en utilisant '^' et '$' – diEcho

+0

@Oscar j'ai essayé avec ce http://rubular.com/r/TxmEZEXQU3, s'il vous plaît dites-moi où je me trompe ?? – diEcho

+0

@diEcho Je vais modifier ma réponse afin que vous puissiez comprendre quelle est l'idée. –

Questions connexes