Java 正则表达式行为

标签 java regex

我正在尝试应用以下模式:

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/

相关文章:

java - 如何通过mvn命令顺序执行2个Java类

java - 空指针异常 : @Autowired does not set field

regex - 仅当字符串中有小写字母时才匹配所有大写单词,使用一个正则表达式

Javascript如何跳过基于空格分隔符的拆分,除了特定序列后面的空格

python - 正则表达式捕获html隐藏输入

Python正则表达式问题

java - 如何在 Java/Groovy 中测试 MongoDB 过滤器 (BSON) 的相等性?

java - 将 JSP 页面连接到本地 MySQL 数据库时出现问题 : wrong Database name

java - jvm 中的 pop 和 pop2 指令有什么区别?

php - 正则表达式匹配两个静态 url 组件之间的部分