regex - Convert Brackets to Links Java -


i writing little android application using java. have text in words in brackets. want convert them links.

* [[my text]]  * [[my text]]  * [[my text]]    * <a href="http://my text">my text</a> * <a href="http://my text">my text</a> * <a href="http://my text">my text</a> 

i know little regex please help.

little theory

regex allows create call capturing groups. allow use part of matched text.

for example regex x(a+)(b+)y try find text xaabbby , store

  • series of a in group 1
  • series of b in group 2.

we can few things part of matched text stored in these groups. can

  1. simply (and later print) using matcher#group(x)

but can reuse in

  1. regex \x (where x represents group number) ([a-z])\1 regex find pairs: aa bb ... yy zz,
  2. replacement $x (x here represents group number).

your case

in case looks want replace text between [[ , ]] <a href="http://(thattext)">(thattext)</a>

to find text between [[ , ]] can use regex \[\[(.*?)\]\]

  • we surrounded .*? parenthesis reuse part between brackets
  • by adding ? *? made * quantifier reluctant means instead of finding maximal match like

    foo [[a]] bar [[b]] baz     ^^^^^^^^^^^^^^^ 

    it try find minimal match like:

    foo [[a]] bar [[b]] baz     ^^^^^               ^^^^^ 

so can reuse part group 1 in replacement via $1. in other words can replace entire [[...]] part "<a href="http://$1">$1</a>"

which leads solution

yourtext = yourtext.replaceall("\\[\\[(.*?)\\]\\]", "<a href=\"http://$1\">$1</a>"); 

Comments