我正在尝试应用以下模式:
Pattern p = Pattern.compile(".*?");
Matcher m = p.matcher("RAJ");
StringBuffer sb = new StringBufffer();
while(m.find()) {
m.appendReplacement(sb, "L");
}
m.appendTail(sb);
预期输出:LLL 实际输出:LRLALJL
上面正则表达式中的点(.)是否匹配字符之间的位置?如果不是为什么会收到上述输出
最佳答案
.*?
匹配任意数量的字符,但尽可能少以匹配整个正则表达式(?
使 *
reluctant(也称为惰性))。由于在正则表达式中之后没有任何内容,这将始终匹配空字符串(也就是字符 between 的位置)。
如果您希望至少匹配一个字符,请尝试 .+?
。请注意,这与 .
if 在正则表达式中没有其他内容相同。
关于Java 正则表达式行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12276079/