正则表达式中的$1在Java中返回空
我有以下Java代码正则表达式中的$1在Java中返回空,java,regex,Java,Regex,我有以下Java代码 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); 归来
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);
归来
<span class="colorForKeyword">public</span> <span class="colorForKeyword">void</span> test{}
str是我模式匹配的对象,因此在示例中我提供了“publicvoidtest{}pattern p=pattern.compile(“+KeyWordsRegExp+”);
Pattern p = Pattern.compile("(" + KeyWordsRegExp + ")");
String span = "<span class=\"colorForKeyword\">$1</span>";
str = p.matcher(str).replaceAll(span);
字符串span=“$1”;
str=p.matcher(str).replaceAll(span);
或
Pattern p=Pattern.compile(关键字sregexp);
字符串span=“$0”;
str=p.matcher(str).replaceAll(span);
(其中$0是整个匹配)
或者没有模式。什么是
关键字regexp
?什么是str
?我更新了问题以反映您的评论。只有“摘要”会给出$1。使用$0
进行完全匹配,而不是$1
?
<span class="colorForKeyword"></span> <span class="colorForKeyword"></span> test{}
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)";
Pattern p = Pattern.compile("(" + KeyWordsRegExp + ")");
String span = "<span class=\"colorForKeyword\">$1</span>";
str = p.matcher(str).replaceAll(span);
Pattern p = Pattern.compile(KeyWordsRegExp);
String span = "<span class=\"colorForKeyword\">$0</span>";
str = p.matcher(str).replaceAll(span);