[英]Regex replacement in java
我正在尝试在Java中进行以下替换
@Test
public void testReplace(){
String str = "1JU3C_2.27.CBT";
String find = "(\\d*)\\.(\\d*)";
String replace = "$1,$2";
String modified = str.replaceAll(find, replace);
System.out.println(modified);
assertEquals("1JU3C_2,27.CBT", modified); //fails
}
但是,两个句点似乎都将被替换。 我正在寻找仅替换数字小数。 (即,预期输出1JU3C_2,27.CBT)
使用(\\\\d+)\\\\.(\\\\d+)
而不是(\\\\d*)\\\\.(\\\\d*)
。
您的正则表达式要求替换零个或多个数字,后跟一个点,然后替换零个或多个数字。 这样。 .CBT中的匹配,因为它的两边都有一个零位数的点。
1JU3C_2.27.CBT的两个点的两边都有零个或多个数字。
如果要将5.67.8之类的字符串转换为5,67,8,请使用(\\\\d+?)\\\\.(\\\\d+?)
惰性匹配。
*
代表零次或多次,请尝试将其替换为
+
而是这样做:
public void testReplace()
{
String str = "1JU3C_2.27.CBT";
String modified = str.replaceFirst("[.]", ",");
System.out.println(modified);
assertEquals("1JU3C_2,27.CBT", modified);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.