替换Java中的方括号

4

我希望在Java中用空字符串替换方括号中的文本:

例如,我有以下句子:

"你好,[1]这是一个示例[2],你能帮助[3]我吗?"

它应该变成:

"你好,这是一个示例,你能帮助我吗?"

3个回答

14
String newStr = str.replaceAll("\\[\\d+\\] ", "");

这将用空字符串替换所有正则表达式的匹配项。

正则表达式是:

\\[  // an open square bracket
\\d+ // one or more digits
\\]  // a closing square bracket
     // + a space character

这是第二个版本(不是原问题所要求的内容,但更好地处理了空格):

String newStr = str.replaceAll(" *\\[\\d+\\] *", " ");

这段代码的作用是将所有正则表达式匹配到的字符串替换为一个空格字符。

这个正则表达式是:

 *   // zero or more spaces
\\[  // an open square bracket
\\d+ // one or more digits
\\]  // a closing square bracket
 *   // zero or more spaces

不错,但你应该在表达式前面添加一个额外的空格来消除多余的空格。 - Edwin
1
@Edwin 我把它加到了后面,但你是对的,前面更好。 - Sean Patrick Floyd
添加了第二个版本,解决了空间问题。 - Sean Patrick Floyd
我不确定所有可用的输入,但我更喜欢不要将空格与标签一起处理。像 [1] A B [4], C D [5] E F [8]. 这样的输入可能无法正确处理。 - nhahtdh

4
这应该可以工作:
.replaceAll("\\[.*?\\]", "").replaceAll(" +", " ");

你为什么会认为多个空格应该被替换? - beerbajay
@beerbajay 从这个例子中可以看出,"Hello, [1] this" 变成了 "Hello, this"。 - Petr Janeček
@beerbajay:从样本输出中。 - nhahtdh
1
好的解决方案,我只想指出这里使用勉强量词是为什么它可以捕获 [1] 而不是 [1] 这是一个例子 [2] 的原因。 - Benjamin Gruenbaum

2

请使用这个,

String str = "[How are you]";
str = str.replaceAll("\\[", "").replaceAll("\\]","");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接