Bonjour, j'ai un petit problème avec mon expression régulière :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| int idx = 1;
String result = "";
String LinkRE = "(<[Aa][^>]*onclick=\"bookmark_onclick[^>]*>)";
Pattern p = Pattern.compile(LinkRE);
content = "<a onclick=\"bookmark_onclick='orga_du_plan_de_devt'; \" "
+ "href=\"javascript:void();\" target=\"_blank\">et mis en place  </a> "
+ "<a onclick=\"bookmark_onclick='orga_du_plan_de_devt'; \" "
+ "href=\"javascript:void();\" target=\"_blank\">et mis en place  </a>";
Matcher m = p.matcher(content);
boolean b = m.matches();
if (b) {
for (int i = 0; i < m.groupCount(); i++) {
String str = m.group(i);
str.replaceAll("<a", "<a class=\"pagelink\"");
str.replaceAll("href=\"javascript:void();\"", "");
result = result + content.substring(idx, m.start() - idx) + str;
idx = m.start() + m.end();
}
result = result + content.substring(idx);
}
return content; |
Mon but est de repérer tous les <a onclick="bookmark_onclick... > pour pouvoir les modifier. Seulement mon expression régulière ne fonctionne uniquement si je ne pose qu'un seul <a ...> sans le fermer. En gros si j'ai :
1 2 3 4
| content ="<a onclick=\"bookmark_onclick='orga_du_plan_de_devt'; \" "
+ "href=\"javascript:void();\" target=\"_blank\">et mis en place  </a> "
+ "<a onclick=\"bookmark_onclick='orga_du_plan_de_devt'; \" "
+ "href=\"javascript:void();\" target=\"_blank\">et mis en place  </a>"; |
En Delphi, l'expression qui fonctionne est :
LinkRE = '(?g)(<[Aa][^>]*onclick="bookmark_onclick[^>]*>)';
Un coup d'oeil dans la librairie de Delphi permet de voir que (?g) siginifie : Modifier non standard. En le mettant à Off vous spécifier de mettre tous les opérateurs en mode non-vorace (par défaut, ce modifier est à On). Aussi, si le modifier /g est à Off, alors '+' fonctionne comme '+?', '*' comme '*?' et ainsi de suite...
Partager