java - 使用 replaceAll 的正则表达式出错
问题描述
我正在尝试替换这样的字符串:
ABCDEF|1.0/nAAAAAA|1.2/n
对于这样的事情,如果字符串 ABCDEF 存在:
ABCDEF|1.1/nAAAAAA|1.2/n
我正在尝试使用此正则表达式,将ABCDEF
字符串作为键并totalDifference
等效于1.1
,但它不起作用:
text= text.replaceAll(key+"(|.*/n)", key+"|"+totalDifference+"/n");
我究竟做错了什么?
解决方案
以防万一,如果这有帮助,这里的一件事|
就是没有转义,而且.*
太通用了,如果你把它缩小一点,它就可以工作。在这种情况下,我假设您要替换该位置的十进制数,并且它的工作原理是这样的。
str.replaceAll(key + "(\\|[\\d.]*)", key + "|" + totalDifference)
如果您更改代码只是为了转义|
,您会看到现在整个字符串都匹配了,因为.*\n
它匹配直到字符串末尾的所有内容,然后您指定您只需要在这些地方的数字或点,[\\d.]*
并且瞧!
推荐阅读
- ruby-on-rails - Poltergeist 使用 CSS 选择器检测到另一个元素
- php - PHP 严格标准在不覆盖超类方法的子类上抛出错误
- android - 部分 TextView 可通过链接点击
- java - Hibernate 5 未设置参数号 2 的值
- javascript - element.nextElementSibling 没有返回正确的元素
- angular - 单元测试因 Angular 中的 NullInjectorError 而失败
- java - Spring Boot 应用程序无法以 ClassNotFoundException 启动
- weblogic - Primavera P6 Professional R8.3.2 与 SQL Server 2014 或 SQL Server 2016 的兼容性
- r - 将长数据框重塑为R中的相关矩阵
- ios - CollectionView 单元格内的 MapView 不显示折线 Swift 4