gpt4 book ai didi

java - 在replaceAll正则表达式中使用\b

转载 作者:行者123 更新时间:2023-12-01 16:49:57 27 4
gpt4 key购买 nike

我想替换字符串中与给定模式匹配的文本。我编写了下面的 Java 代码来执行此操作。

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

}

第一个 block 正在按预期工作。但在第二个 block 中,它不是替换字符串开头的 Test],而是替换 Test]ing 的一部分。

代码或正则表达式有什么问题吗?如何匹配 Test] 而不是 Test]ing

Test]

最佳答案

正则表达式中的\b 匹配单词边界,即单词\w 和非单词\W 字符之间的位置。由于模式中的 ] 是非单词字符,因此第一个位置 (Test] ) 中不存在带有以下空格的单词边界,但在第二个位置 (Test]ing) 中不存在单词边界,其中 ] 后跟字字符i。

为了匹配第一个测试],您可以将正则表达式更改为

"\\bTest\\]\\B" 

匹配]之后的非单词边界。

关于java - 在replaceAll正则表达式中使用\b,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42508517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com