我想替换与给定模式匹配的字符串中的文本。我写下面的Java代码来做到这一点。在替换所有正则表达式中使用 b
public static void main(String[] args) {
/* Block 1 */
String s1="123 Test Testing";
System.out.println(s1.replaceAll("\\bTest\\b", "<Replaced with Test Message>")); // Prints 123 <Replaced with Test Message> Testing
/* Block 2 */
String s2="123 Test] Test]ing";
System.out.println(s2.replaceAll("\\bTest\\]\\b", "<Replaced with Test Message>")); //Prints 123 Test] <Replaced with Test Message>ing
}
第一个模块按预期工作。但在第二块中,不是替换字符串开始处的Test]
,而是取代Test]ing
的一部分。
代码或正则表达式有什么问题吗? 如何匹配Test]
Test]
代替Test]ing
所有正确的(与您的正则表达式没有任何问题,他们按预期工作)。我认为你需要使用'“(?<!\\ S)Test \\](?!\\ S)”'。 –
@WiktorStribiżew更新了代码。使用此代码,您的解决方案失败。 –
“失败”是什么意思?我的建议完美无缺 - https://regex101.com/r/w1wXqd/1 –