我想替換與給定模式匹配的字符串中的文本。我寫下面的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 –