【发布时间】:2016-11-06 17:01:16
【问题描述】:
我需要在 java 中查找和替换子字符串,例如以 '%' 开头的变量名,使用这样的正则表达式:
[\s,(](%variable)[\s,)$]
我想查找所有变量,存储它们的名称,然后将它们替换为某个占位符,例如 %%。在java中找不到怎么可能,请帮忙。 Matcher#replaceAll 替换整个正则表达式,但我只需要替换第一组,而不是整个事件。
这是我用于搜索的代码示例:
Matcher m=Pattern.compile(regex).matcher(str);
while(m.find())
{
System.println(m.group(1));
}
更新: 解决方案是将捕获设置为整个正则表达式:
([\s,(])(%variable)([\s,)$])
然后使用 replaceAll("$1"+replacement+"$3")
【问题讨论】:
-
你试过
replaceFirst的方法吗? -
@developer033 这对捕获组没有任何作用。这只是替换正则表达式的第一个匹配项,而不是替换所有匹配项。
-
嗯,他说“我只需要替换第一组,而不是整个事件。”
-
First 表示“1”,而不是“0”;)我需要用 Java 术语替换“group(1)”
-
@developer033 “第一组”是指匹配在其正则表达式中括号内的部分。和第一场比赛不一样。