java - 为什么 replaceFirst 和 replaceAll 给出不同的结果?

标签 java regex

下面的代码会将str设置为“testss”

String str = "test".replaceAll("(.*)$","$1s");

以下代码会将其设置为“测试”

String str = "test".replaceFirst("(.*)$","$1s");

我原以为这两个操作会产生相同的结果。有人可以解释为什么 replaceAll 在字符串末尾添加一个额外的 s 吗?

最佳答案

这是因为 "(.*)$""test" 中捕获了两个字符串,"test" 和空字符串 ( “”)。所以 replaceAll 将添加两个 "s"

关于java - 为什么 replaceFirst 和 replaceAll 给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12947714/

相关文章:

java - 如何网络抓取自动完成文本字段

java - 损坏的 Eclipse 项目 - classNotFoundException - 找不到主类

java.sql.SQLException : database connection closed

java - 如何让antlr语法识别带空格的字符串?

c# - 查找标题然后修改它们

c++ - 使用 C++ 替换或删除正则表达式中不存在的字符

c# - 如何在同一个文件中优雅地实现多个字符串替换?

无空格的 HTML 模式正则表达式

java - 在 weblogic 12.1.3 C 中部署 webservice 的问题?

javascript - 正则表达式删除除数字之外的所有特殊字符?