如何只更换令牌,没有子串?

mem*_*und 1 java regex replace

我正在寻找一种方法来替换完整的令牌,而不是替换令牌的子串,例如:

String test = "a | ab & c | a";
Run Code Online (Sandbox Code Playgroud)

现在我想用其他任何东西替换"a",但这应该只替换"a"而不是"ab".

test.replace("a", "1"); //would result: "1 | 1b & c | 1"
Run Code Online (Sandbox Code Playgroud)

我怎样才能取代"全字"?

顺便说一句,更换特殊字符"|"之间的标记 或"&"来自:

\\s*[|&][|&\\s]*
Run Code Online (Sandbox Code Playgroud)

这是我将它们分开的正则表达式.也许我可以再次使用这个正则表达式替换?

ass*_*ias 5

你可以使用带有单词边界(\b)的正则表达式,它只会替换"孤立的" a:

test.replaceAll("\\ba\\b", "1");
Run Code Online (Sandbox Code Playgroud)

例:

String test = "a | ab & c | a";
System.out.println(test.replaceAll("\\ba\\b", "1"));
Run Code Online (Sandbox Code Playgroud)

打印1 | ab & c | 1.