$1 in Regular Expression is returning empty in Java

DaveK

I have the following Java code

Pattern p = Pattern.compile(KeyWordsRegExp);
Matcher m = p.matcher(str);
StringBuffer sb = new StringBuffer();
while (m.find()) {
    m.appendReplacement(sb, "<span class=\"colorForKeyword\">$1</span>");
}
m.appendTail(sb);

I am trying to locate keywords in a string and replace them with some HTML markup. I would like

public void test{} 

to return as

<span class="colorForKeyword">public</span> <span class="colorForKeyword">void</span> test{}

The java code I have above locates the words fine but the $1 expression is not replacing the found pattern so I get

<span class="colorForKeyword"></span> <span class="colorForKeyword"></span> test{}

edit: KeyWordRegExp is

private String KeyWordsRegExp = "(\\babstract\\b)|(\\bcontinue\\b)|(\\bfor\\b)|(\\bnew\\b)|(\\bswitch\\b)|(\\bassert\\b)|(\\bdefault\\b)|(\\bgoto\\b)|(\\bpackage\\b)|(\\bsynchronized\\b)|(\\bboolean\\b)|(\\bdo\\b)|(\\bif\\b)|(\\bprivate\\b)|(\\bthis\\b)|(\\bbreak\\b)|(\\bdouble\\b)|(\\bimplements\\b)|(\\bprotected\\b)|(\\bthrow\\b) |(\\bbyte\\b)|(\\belse\\b)|(\\bimport\\b)|(\\bpublic\\b)|(\\bthrows\\b)|(\\bcase\\b)|(\\benum\\b)|(\\binstanceof\\b)|(\\breturn\\b)|(\\btransient\\b)|(\\bcatch\\b)|(\\bextends\\b)|(\\bint\\b)|(\\bshort\\b)|(\\btry\\b)|(\\bchar\\b)|(\\bfinal\\b)|(\\binterface\\b)|(\\bstatic\\b)|(\\bvoid\\b) |(\\bclass\\b)|(\\bfinally\\b)|(\\blong\\b)|(\\bstrictfp\\b)|(\\bvolatile\\b)|(\\bconst\\b)|(\\bfloat\\b)|(\\bnative\\b)|(\\bsuper\\b)|(\\bwhile\\b)";

str is what I am pattern matching against, thus in the example I provide "public void test{}

Joop Eggen
Pattern p = Pattern.compile("(" + KeyWordsRegExp + ")");
String span = "<span class=\"colorForKeyword\">$1</span>";
str = p.matcher(str).replaceAll(span);

or

Pattern p = Pattern.compile(KeyWordsRegExp);
String span = "<span class=\"colorForKeyword\">$0</span>";
str = p.matcher(str).replaceAll(span);

(where $0 is the entire match)

or without Pattern.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Java Regular expression for 1=1

From Java

Java regular expression returning false on match

From Dev

Java - explain this regular expression (",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1)

From Dev

Java - explain this regular expression (",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1)

From Dev

Java regular expression empty or my format

From Dev

Regular Expression for "string not empty"

From Dev

regular expression for is empty space

From Dev

Regular expression returning None (python)

From Dev

returning string matching regular expression

From Dev

regular expression matches returning false

From Dev

JavaScript regular expression returning false?

From Dev

Date Regular Expression Not Returning True

From Dev

returning string matching regular expression

From Dev

JavaScript regular expression returning false?

From Dev

regular expression matches returning false

From Dev

Regular expression returning None (python)

From Dev

Regular expression to match an empty string?

From Dev

Regular expression is not matching empty character

From Dev

regular expression that tests if string is empty

From Dev

$1 in regular expression javascript

From Dev

python regular expression "\1"

From Dev

Java - ArrayList is returning Empty

From Dev

Java Regular Expression to match 1 to 5 asterisks only

From Dev

Java regular expression replaceall

From Dev

Java Regular Expression <elipses>

From Dev

Optimize Java Regular expression

From Dev

Regular expression-JAVA

From Dev

united regular expression java

From Dev

issue with regular expression in java