用Java替换2个字符串之间的String

时间:2016-12-04 04:15:49

标签: java regex

我试图查找一组字符串的所有匹配项,并在新值中替换它们之间的内容。我已经尝试了在本网站上找到的Java /正则表达式的所有示例,但没有一个有效。字符串的示例如下所示:

"TestValue 1 VARCHAR(10), TestValue2 FLOAT(53), TestValue3 FLOAT(53)"

我想找到并替换" FLOAT("和")"之间的所有值。使用53使上述字符串替换为:

replaceAll("FLOAT(.*?)", "53")

如何使用String.replaceAll执行此操作?

我尝试了FLOAT,它只是替换"TestValue 1 VARCHAR(10), TestValue2 53(126), TestValue3 53(135)" 所以字符串看起来像:

{{1}}

2 个答案:

答案 0 :(得分:3)

您可以使用\(\)来转义字面括号,然后使用\d+来匹配数字。像,

String s = "TestValue1 VARCHAR(10), TestValue2 FLOAT(126), TestValue3 FLOAT(135)";
System.out.println(s.replaceAll("FLOAT\\(\\d+\\)", "FLOAT(53)"));

输出(按要求)

TestValue1 VARCHAR(10), TestValue2 FLOAT(53), TestValue3 FLOAT(53)

答案 1 :(得分:2)

它更简单 - 您的替换是固定的(它不依赖于匹配的文本) - 您总是希望替换为FLOAT(53)

所以使用正则表达式

FLOAT\(\d+\)

和替换

FLOAT(53)