Java string.match/string.replace 无法正确匹配正则表达式

标签 java regex string

我有一个字符串 "123.0" 并使用 "123.0".matches( "(\\.)?0*$") 检查它是否有任何尾随零但不匹配。相同的正则表达式正确匹配字符串@ http://regexpal.com/

如果我只想用其他内容替换最后一个零怎么样? String.replace 说:

replace(CharSequence target, CharSequence replacement) - Replaces each substring of this string that matches the literal target sequence with the specified literal replacement sequence.

但是 "123.0".replace( "(\\.)?0*$", "") 它不会替换最后一个“.0”。

最佳答案

java.lang.String.matches方法匹配整个字符串,而不是其中的一部分。 (无需指定 ^$)。

所以你的模式字符串应该是:

"\\d+\\.?0*"

Demo

更新根据问题编辑:

您应该使用replaceAll而不是替换replace 不接受正则表达式。它按字面解释第一个参数。

"123.0".replaceAll("\\.0*$", "")

关于Java string.match/string.replace 无法正确匹配正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21129998/

相关文章:

java - Gson 通过对象模型解析文本/纯文本不会隔离字段,而是打印所有字段

java - 重新初始化 Play 吗啡后 findAll 失败

java - 多行正则表达式

mysql - 将字符串中的每个单词插入 MySql 中单独的行

java - 在 Java 中将 JSON 转换为 List<List<String>>

java - 作为参数传递时转义文件名

java - 隐式 super 构造函数 Seat() 未定义。必须显式调用另一个构造函数

java - 在 cucumber 测试期间无法执行目标 org.apache.maven.plugins :maven-surefire-plugin:2. 19.1 :test,

regex - Notepad++ 正则表达式 "rounding numbers"

java - 连接多个命令