[JAVA] Regular Expression gebruikmakend van RE

Pagina: 1
Acties:

  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 09:52
door omstandigheden ben ik beperkt tot het gebruik van 1.3 java API in deze versie zit het javax.util.Regex package niet, dus maak ik gebruik van het jakarta regular expression package

org.apache.regexp.RE

ik zou nu willen in een string elke http://www.ditiseenlink.be/gelijkwat?maghierkomen vervangen en deze tussen een <a href> tag plaatsten

volgende code heb ik

Java:
1
2
3
4
RE regEx = new RE("http://[\\.\\w\\-\\?/~_@&=%]+"); 
if (regEx.match(note)) {
    note = regEx.subst(note, "<a href=\"" + regEx.getParen(0) + "\">" + regEx.getParen(0) + "</a>", RE.REPLACE_ALL);
}


probleem hierbij is dat wanneer er zich verschillende http urls in de string bevinden dat deze methode elke string vervangt door de eerste die ie gevonden heeft..

ik zou willen dat elke url vervangen word de juist <a href> tag

"Live as if you were to die tomorrow. Learn as if you were to live forever"


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Je moet backreferencen naar de regular expression. Nu match je de eerste URL en gebruik je die match om te replacen. Die if heb je dus ook niet nodig:
Java:
1
2
RE regEx = new RE("http://[\\.\\w\\-\\?/~_@&=%]+"); 
note = regEx.subst(note, "<a href=\"$0\">$0</a>", RE.REPLACE_ALL);


$0 verwijst dus naar de "nulde" paren in de huidige match.
Zie ook subst(java.lang.String, java.lang.String,int)

edit:
Ik vraag me trouwens af of je wel in die docs gekeken hebt, want zo goed als exact jouw probleem staat daar in met http://www.apache.org/ :z

[ Voor 38% gewijzigd door drm op 30-12-2004 14:49 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 09:52
ok volgende werkt dus:
Java:
1
note = regEx.subst(note, "  <a href=\"$0\">$0</a>", RE.REPLACE_BACKREFERENCES);


wel vreemd dat ik 2 spaties voor <a moet plaatsten, anders schrijft ie de <a niet uit

"Live as if you were to die tomorrow. Learn as if you were to live forever"


  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 09:52
Ik vraag me trouwens af of je wel in die docs gekeken hebt, want zo goed als exact jouw probleem staat daar in met http://www.apache.org/ :z
had ik gedaan, maar ik begreep die backreferences niet, als je jou code gebruikt lukt het niet, je moet effectief die flag zetten

"Live as if you were to die tomorrow. Learn as if you were to live forever"


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Oh, daar had ik overheen gelezen. Staan we quitte ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz