【发布时间】:2014-08-07 15:38:45
【问题描述】:
我需要对字符串中可能出现一次或多次的类似变量的模式进行搜索和替换。我开始做以下工作正常:
String str1 = "Hello $$(var)";
String regex = "$$(var)";
str1.replaceAll(Pattern.quote(regex), " world");
这会正确生成"Hello world"。
但我发现这些“变量”可能包含文字字符串,如下所示:
String str2 = "Hello $$(var_AndUniverse)";
所以现在我需要一个解决方案,之前的结果是"Hello world_AndUniverse"。
这是一个简单的案例。这些输入的字符串可能有数千个字符长并包含一个或多个变量,每个变量出现一次或多次。
我可以找出使用indexOf() 方法并通过循环遍历整个字符串来创建新字符串的蛮力方法,但我想知道是否有更简单的方法可以使用正则表达式和replaceAll() 方法来做到这一点或者可能是Pattern/Matcher 解决方案。
【问题讨论】:
-
你可能不想用正则表达式来做这件事。使用
StringBuilder的正确解析/替换解决方案。 -
我认为您应该实现自己的解析器。正则表达式和(似乎是)标记不太好。