【发布时间】:2016-08-01 12:49:20
【问题描述】:
我想用${variable}$替换所有:variable(以:开头的单词)。
例如,
:aks_num和${aks_num}$:brn_num和${brn_num}$
以下是我的代码,它不起作用:
public static void main(String[] argv) throws Exception
{
CharSequence chSeq = "AND ((:aks_num = -1) OR (aks_num = :aks_num AND ((:brn_num = -1) OR (brn_num = :brn_num))))";
// replaceAll also not working
//String s = chSeq.replaceAll(":\\([a-z_]*\\)","\\${ $1 \\}$");
Pattern p = Pattern.compile(":\\([a-z_]*\\)");
Matcher m = p.matcher(chSeq);
if (m.find()) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
} else {
System.out.println("NO MATCH");
}
}
在 shell 脚本中,以下正则表达式完美运行:
s/:\([a-z_]*\)/${\1}$/g
【问题讨论】:
-
Pattern p = Pattern.compile("\\(:[a-z_]*"); -
感谢@WiktorStribiżew
-
@praxnet:我在下面发布了一个答案,其中包含有关增强功能的解释和更多想法。