如何删除字符串中的特殊字符模式

时间:2012-08-02 15:15:27

标签: java regex string

我有一个字符串名称,

String s = "He can speak English and Sinhala.[1]He<ename> has edited 12 CSE Staff Research Publications.[1][2]"

我想从字符串中删除[1][1][2]。请注意,方括号内可以包含任意数字,方括号中没有任何数字(如[number][number][number]...)。我试过用这个,

String removedNoTag = s.replaceAll("[\\[0-9\\]]","");

是的,它会删除所有[数字] ..模式。但它也删除了文本中的所有数字(它也删除了12)。

有人可以告诉我怎么做吗?

4 个答案:

答案 0 :(得分:3)

试试这个:String removedNoTag = s.replaceAll("\\[\\d+\\]","");

答案 1 :(得分:3)

您正在逃避正则表达式中的错误括号。你在寻找的是:

String removedNoTag = s.replaceAll("\\[[0-9]+\\]","");

String removedNoTag = s.replaceAll("\\[\\d+\\]","");

\d[0-9]的缩写形式。

答案 2 :(得分:2)

您的外部括号定义了一组要删除的字符。该集定义为[]0-9。因此,检测到这些的任意组合(例如[]2][3][324]]1[[[)。

而是尝试\\[\\d+\\],这意味着开括号,一个或多个数字(\d)和一个结束括号。

答案 3 :(得分:1)

因为它删除了数字或括号的任何字符实例。

替换为:\\[[0-9]+\\]