regex - Pass Java backreference to method parameter -
i need java port of https://gist.github.com/jbroadway/2836900, simple markdown regex parser in php.
i hoping use backreferences, can't make work. @ moment i'm not using hashmap
, i've got 2 javafx textarea
s i'll , set text via changelistener
.
{ //... htmltextarea.settext(markdowntextarea.gettext() .replaceall("(#+)(.*)", header("$0", "$1", "$2")); } private string header(string text, string char, string content) { return string.format("<h%s>$2</h%s>", char.length(), char.length());
the backreference on $2 works, if returned, other backreferences don't. char.length()
2 since it's treated $2
, not backreference.
id think of solution can keep style , don't need handle separately.
the problem backreference values honored in replacement string. such, values passed header()
method $0
, $1
, $2
literals , not captured values.
since there's no version of replaceall()
accepts lambda expression, think best bet use matcher
object:
string text = "###heading 3"; pattern p = pattern.compile("(#+)(.*)"); matcher m = p.matcher(text); stringbuffer out = new stringbuffer(); while(m.find()) { int level = m.group(1).length(); string title = m.group(2); m.appendreplacement(out, string.format("<h%s>%s</h%s>", level, title, level)); } m.appendtail(out); system.out.println(out.tostring());
for given input, prints out:
<h3>heading 3</h3>
Comments
Post a Comment